ExBB Community » Файловый ExBB » Решение проблем » Function create_function() is Deprecated.

Страниц (2): [1] 2 »
 

1. Speaker - 8 июля 2019 — 11:48 - перейти к сообщению
После перехода на PHP 7.2 появилась ошибка Function create_function() is Deprecated.
Вот строка из error_log:
Function create_function() is deprecated in /home/.../public_html/forum/include/fm.class.php

Эта функция также обнаружена в файлах:
modules/threadstop/frontindex.php
modules/mailer/Mailer.Class.php

Тема активно обсуждается в сети, например, здесь: https://stackoverflow.com/questi...on-is-deprecated

Сам переписывать функции побоялся. Как эти решения использовать применительно к ExBB?
2. Speaker - 11 июля 2019 — 14:31 - перейти к сообщению
Speaker пишет:
Как эти решения использовать применительно к ExBB?


Помогите, пожалуйста. Неужели кроме меня никого не коснулась эта проблема?
3. NordWest - 11 июля 2019 — 23:08 - перейти к сообщению
Постараюсь посмотреть на выходных, если раньше никто не подскажет.
4. 1Bot - 12 июля 2019 — 12:04 - перейти к сообщению
Speaker, какая версия форума Вами используется?
5. Speaker - 14 июля 2019 — 11:59 - перейти к сообщению
Cудя по копирайту в коде файлов - ExBB v.1.1. Кодировка utf-8.
6. 1Bot - 15 июля 2019 — 14:50 - перейти к сообщению
Speaker
Найдены несовместимые с PHP v7.2 участки кода в основном классе fm.
Сделана замена на анонимные функции устаревшей функции create_function().
Прикрепляю исправленный файл ExBB-1.1.3/include/fm.class.php из последнего дистрибутива.
7. Speaker - 16 июля 2019 — 06:45 - перейти к сообщению
1Bot, спасибо большое!

А что делать с этими файлами?

modules/threadstop/frontindex.php
modules/mailer/Mailer.Class.php

В них тоже есть create_function()
8. 1Bot - 16 июля 2019 — 06:56 - перейти к сообщению
Speaker , в остальные файлы тоже желательно внести правки, но и без них будет работать, если не исполтзуются чат и почтовые функции.
9. Speaker - 16 июля 2019 — 07:03 - перейти к сообщению
1Bot, заменил файл на новый, но теперь форум вообще не отображается и выдает HTTP ERROR 500.
10. electron - 16 июля 2019 — 07:07 - перейти к сообщению
Speaker , опуститесь на версию пхп 7.0 , на ней форум стабильно работает
11. Speaker - 16 июля 2019 — 07:57 - перейти к сообщению
electron пишет:
Speaker , опуститесь на версию пхп 7.0 , на ней форум стабильно работает



Попробовал переключить на 7.0, и все равно ERROR 500

Возможно, у нас несостыковка с версиями форума. Я вроде ставил 2.0 (utf-8 по умолчанию). В копирайте вижу Powered by ExBB FM 1.0 Final, а в коде страниц ExBB v.1.1

Ваш файл почему-то в Windows-1251. На всякий случай я попробовал его перекодировать в utf, но это не помогло.
12. Speaker - 16 июля 2019 — 10:50 - перейти к сообщению
1Bot, спасибо, разобрался. Видимо, проблема в несовпадении версий. Я просто скопировал из Вашего файла все строки соответствующие моим с create_function и все заработало! Но осталась еще одна некритическая ошибка, которую хотелось бы убрать.
Error_log пишет:
Undefined offset: 2 in ...public_html/forum/include/common.php on line 39

Если я правильно понимаю, что-то не так с форматом урла в админке. Пробовал переписать в файле header('Location: http://' . $set_url[2] на header('Location: https://' . $set_url[2] (сайт на https). В админке пробовал разные варианты url, но не помогло. Что тут можно сделать?
13. 1Bot - 16 июля 2019 — 15:19 - перейти к сообщению
Speaker,
Форум работает, с нуля скачана последняя версия дистрибутива ExBB 1.1.3, сделана замена файла /include/fm.class.php
OS: Centos 6 x86_64
PHP: 7.2.20 из репозитория remi-php72
(Добавление)
Speaker пишет:
еще одна некритическая ошибка, которую хотелось бы убрать.
Error_log пишет:
Undefined offset: 2 in ...public_html/forum/include/common.php on line 39


В файле /include/common.php
заменить
CODE:
if (@$req_url[2] == @$set_url[2] && $req_url[1] != $set_url[1]) {
header('Location: http://' . $set_url[2] . $req_url[3] . ( ( $_SERVER['QUERY_STRING'] ? '?' . $_SERVER['QUERY_STRING'] : '' ) ));
}

на
CODE:
if (
isset($req_url[1]) &&
isset($req_url[2]) &&
isset($set_url[1]) &&
isset($set_url[2]) &&
$req_url[2]==$set_url[2] &&
$req_url[1]!=$set_url[1]
) {
header('Location: http://' . $set_url[2] . $req_url[3] . ( ( $_SERVER['QUERY_STRING'] ? '?' . $_SERVER['QUERY_STRING'] : '' ) ));
}
14. Speaker - 16 июля 2019 — 17:07 - перейти к сообщению
1Bot, спасибо большое. Видимо, у меня все-таки версия 2.0. У меня кодировка utf была изначально.

Странно только, что копирайтах везде написано 1.1.

Подойдет ли Ваш код (для /include/common.php) для 2.0?
15. electron - 17 июля 2019 — 06:25 - перейти к сообщению
Speaker , в теме про версию 2.0 четко написано, что она еще очень сырая , нестабильная и наверняка содержит кучу ошибок. Разработчик этого релиза пока не рекомендовал ее ставить на живой форум

Яндекс.Метрика   

Powered by ExBB
[Script Execution time: 0.0394]     [ ]