Переезд на PHP7

rafaello

Новичок
Доброго дня.
Ребята, подскажите!
Скрипт написан на php5.3. Закинул его на сервер с php7.0 и пошагово исправляю все возникающие ошибки. Также использую PHP mar. Так вот, после массовой замены
PHP:
grep -lr -e 'mysql' . | xargs sed -i 's/mysql/mysqli/g'
скрипт обозначился в браузере. Но тут выходит такая ошибка:
Код:
Notice: IEM_DBFACTORY::manufacture -- Implementation does not exists in /var/www/respo.mybusines/admin/com/lib/IEM.class.php on line 63
Сам класс обозначен так
PHP:
class IEM_DBFACTORY{
public function __construct()
    {
        die('This class cannot be instantiated.');
    }
static public function manufacture($type, $host = 'localhost', $user = null, $password = null, $name = null)
    {***********}
}
а строка, вызывающая ошибку такая
PHP:
$db = IEM_DBFACTORY::manufacture(DATABASE_TYPE, DATABASE_HOST, DATABASE_USER, DATABASE_PASS, DATABASE_NAME);
Как пофиксить?
PS: На сервере с php5.3 все работало без проблем...
 

ksnk

прохожий
Как пофиксить?
Notice: IEM_DBFACTORY::manufacture -- Implementation does not exists
?
Определить метод manufacture, очевидно.

Кстати, у mysqli по сравнению с mysql есть еще довольно много различий. Например разный порядок переменных в функции
mysqli_query, mysqli_real_escape_string ... Требуется чуть более творческий подход к делу...
 

rafaello

Новичок
так метод manufacture определен в классе IEM_DBFACTORY и в php5.3 все работало нормально. Может вызов метода для php7 надо изменить?
 

rafaello

Новичок
там вот это
PHP:
 $db = IEM_DBFACTORY::manufacture(DATABASE_TYPE, DATABASE_HOST, DATABASE_USER, DATABASE_PASS, DATABASE_NAME);
да, я понял... надо смотреть на функции mysqli . Г-н ksnk правильно подсказал....
 

AnrDaemon

Продвинутый новичок
Для такой "миграции" лучше взять готовый инструмент, чем изобретать свой велосипед.
 

AnrDaemon

Продвинутый новичок
https://github.com/philip/MySQLConverterTool например.
Но это всё заплатки, ничего не меняющие в принципе.
Главная проблема, почему ext/mysql пристрелили, это его принципиальная небезопасность, и все эти конвертеры принципиально проблему не решают.
 

fixxxer

К.О.
Партнер клуба
> Implementation does not exists in
PHP такие notice-ы не выдает. Это либо trigger_error, либо какое-то расширение.
 
Сверху