PHP 7 + MDB2 오류가 발생합니다.

매출이 오르면 내리는 수수료! 지금 수수료센터에서 전자결제(PG)수수료 비교견적 신청해 보세요!
PHP 7 + MDB2 오류가 발생합니다.

QA

PHP 7 + MDB2 오류가 발생합니다.

답변 2

본문

PHP 5.2 + + MySQL 5.0 + PEAR MDB2 로 개발된 홈페이지가 있습니다.

 

서버 이전을 필요해서 PHP 7.2 + MySQL 5.7 로 이전을 하면 MDB2 에러가 발생합니다.

 

구글링을 해보니 MDB2 가 PHP 7.x 에서 호환이 안된다고 하는데

이것에 대한 해결방법은 없는걸까요?

 

Warning: count(): Parameter must be an array or an object that implements Countable in /home/aaaa/PEAR/MDB2/MDB2.php on line 822

Parse error: syntax error, unexpected 'new' (T_NEW) in /home/aaaa/PEAR/MDB2/MDB2/Driver/mysql.php on line 855

 

MDB2.php 의 822라인은

        if (!count($dsn)) {
            return $parsed;
        }

 

mysql.php 의 855라인은

        $obj =& new $class_name($this, $statement_name, $positions, $query, $types, $result_types, $is_manip, $limit, $offset);
 

참고로 $dsn 은 이렇게 선언되어 있습니다.

$server = G5_MYSQL_HOST;
$user = G5_MYSQL_USER;
$password = G5_MYSQL_PASSWORD;
$database = G5_MYSQL_DB;
$dsn = "mysql://$user:$password@$server/$database";

 

구글링을 해보니 이런 문서가 있는데

https://qiita.com/yaquality/items/51739d9c673b1dae7a21

이 질문에 댓글 쓰기 :

답변 2

$obj =& new $class_name(

$obj = new $class_name(

참조 연산자를 빼보세요.

php5.3부터 deprecated 되었다가 7부터는 아예 지금처럼 syntax error 뜹니다.

https://www.php.net/manual/en/language.references.whatdo.php

count함수의 경우 php가 버전업되면서 해당변수가 count함수를 사용할 수 없을때 에러가 나는것으로 알고 있습니다.

해당 $dsn = array(); 등으로 미리 변수에 배열 선언을 하여야 오류가 안나실겁니다

사용하던 MDB2 가 php4/php5 에 최적화(?)된 것이라서 한두곳이 문제가 아니었나 봅니다.
다행히도 php7에 적합한 수정된 버전을 발견해서 무사히 적용했습니다.

답변을 작성하시기 전에 로그인 해주세요.
QA 내용 검색
질문등록
전체 126
© SIRSOFT
현재 페이지 제일 처음으로