테스트 사이트 - 개발 중인 베타 버전입니다

PHP 7 + MDB2 오류가 발생합니다. 채택완료

해피정 6년 전 조회 3,435

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개

채택된 답변
+20 포인트

$obj =& new $class_name(

$obj = new $class_name(

참조 연산자를 빼보세요.

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

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

로그인 후 평가할 수 있습니다

답변에 대한 댓글 1개

해피정
6년 전
MDB2 가 PHP 7.x 에 적합하게 수정된 것이 확인되어 수정하고 그 내용을 아래에 정리했습니다.
https://www.happyjung.com/lecture/2878

댓글을 작성하려면 로그인이 필요합니다.

6년 전

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

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

로그인 후 평가할 수 있습니다

답변에 대한 댓글 1개

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

댓글을 작성하려면 로그인이 필요합니다.

답변을 작성하려면 로그인이 필요합니다.

로그인