Помощь Ошибки в PHP скрипте после обновления версии PHP с 5.6 до 7+

killoff

Команда форума
Moderator
Разрушитель (V)
Сообщения
182
Симпатии
92
Баллы
1 418
Нужно обновить на одном сайте версию PHP, но некоторые скрипты перестают работать и выдают ошибку. Гуглил почти 2 дня и 2 ночи, не смог найти решения никакого. Включил вывод ошибок, и ошибки идут в строках/кодах:
Notice: Undefined variable: where in *.php on line 23 Notice: Undefined variable: where in *.php
Код:
$where = is_null($where) && !is_string($where) ? "short_story,full_story,title,xfields" : trim(strip_tags(stripslashes($where)));
Notice: Undefined variable: gtype in *.php on line 24 Notice: Undefined variable: gtype in *.php
Код:
$gtype = is_null($gtype) && !is_string($gtype) ? "against" : "like";
Notice: Undefined variable: sort in *.php on line 42 Notice: Undefined variable: sort in
Код:
$sort = is_null($sort) && !is_string($sort) ? "date" : trim(strip_tags(stripslashes($sort)));
Notice: A non well formed numeric value encountered in *.php on line 94
Код:
if (date('Ymd', $rowsql['date']) == date('Ymd', $thisdate))
Notice: A non well formed numeric value encountered in*.php on line 96
Код:
elseif (date('Ymd', $rowsql['date']) == date('Ymd', ($thisdate - 86400)))
Warning: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead in *.php on line 116
Код:
$tpl->copy_template = preg_replace("#\{date=(.+?)\}#ie", "langdate('\\1', '{$rowsql['date']}')", $tpl->copy_template); // формирование даты

Кто может подсказать как исправить данные ошибки? Я понимаю что вроде как ошибки однотипные, но гугл за пару дней не натолкнул на инфу как исправить данные ошибки при переходе с версии 5.х на 7.х. Для полноты картины могу в ЛС или под хайдом скинуть полный файл, если данных строк будет мало для понимания проблемы.

🙏

Скрытое содержимое. Вам нужно войти или зарегистрироваться.
 
Последнее редактирование:
на preg_replace_callback всё равно ругается:
Warning: preg_replace_callback(): The /e modifier is no longer supported, use preg_replace_callback instead in *** on line 119
Код:
$tpl->copy_template = preg_replace_callback("#\{date=(.+?)\}#ie", function($match) use ($rowsql) { return "langdate('{$match[1]}', '{$rowsql['date']}')"; }, $tpl->copy_template); // формирование даты
 
на preg_replace_callback всё равно ругается:

Код:
$tpl->copy_template = preg_replace_callback("#\{date=(.+?)\}#ie", function($match) use ($rowsql) { return "langdate('{$match[1]}', '{$rowsql['date']}')"; }, $tpl->copy_template); // формирование даты
Сорь, забыл изменить regex
Код:
$tpl->copy_template = preg_replace_callback("#\{date=(.+?)\}#is", function($match) use ($rowsql) { return "langdate('{$match[1]}', '{$rowsql['date']}')"; }, $tpl->copy_template); // формирование даты
 
а кто нибудь знает, есть ли программы/плагины для IDE которые автоматически перепишут код с версий php5.x до php 7.x ?
или при миграции только прямые руки в помощь?
 
а кто нибудь знает, есть ли программы/плагины для IDE которые автоматически перепишут код с версий php5.x до php 7.x ?
или при миграции только прямые руки в помощь?
Существует несколько инструментов, которые могут автоматически обновлять код PHP 5.x до PHP 7.x. Одним из таких инструментов является
Скрытое содержимое. Вам нужно войти или зарегистрироваться.
Этот инструмент анализирует код PHP и выдает рекомендации по обновлению кода до совместимости с PHP 7.

Кроме того, некоторые IDE могут предоставлять средства для обновления кода. Например,
Скрытое содержимое. Вам нужно войти или зарегистрироваться.
Он может автоматически обновлять код, исправлять имена функций, удалить устаревшие конструкции языка и т.д.

Однако, не все ошибки и проблемы в коде могут быть обнаружены и исправлены автоматически. Поэтому рекомендуется производить обновление кода вручную!
 
Последнее редактирование:
Назад
Верх