PHP 7 + MDB2 오류가 발생합니다.
본문
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";
구글링을 해보니 이런 문서가 있는데
답변 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(); 등으로 미리 변수에 배열 선언을 하여야 오류가 안나실겁니다