Некорректно работает SMF Shoutbox

Автор Snow_Irbis, 05 мая 2019, 12:16:10

« назад - далее »

0 Пользователи и 2 гостей просматривают эту тему.

Snow_Irbis

Недавно заметил некорректную работу чата SMF Shoutbox, которая проявляется в том, что сообщение то отправляется пустым, то отправляется нормально. При этом пишет вот такую ошибку в логах форума:

http://site.org/index.php?action=shoutbox;sa=send;sesc;xml;row=0
2: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
Файл: /var/www/user/data/www/site.org/Sources/Shoutbox.php
Строка: 316


Строка 316 файла Shoutbox.php из кода содержит только переменную

Вам недоступны вложения в этом разделе.

В чем может быть проблема и как починить чат (переустанавливать пробовал, не помогло)? Версия SMF 2.0.15 , PHP 7.0.33 , чат последней версии с офф.сайта SMF.

Yarik

Цитата: Snow_Irbis от 05 мая 2019, 12:16:10Строка 316 файла Shoutbox.php из кода содержит только переменную
Ну собственно смотреть надо строку 315.И в ошибке все же четко описано.
preg_replace больше не поддерживается в PHP7, вместо этого используйте preg_replace_callback

Snow_Irbis

Цитата: S.T.A.L.K.E.R. от 05 мая 2019, 13:08:43Ну собственно смотреть надо строку 315.И в ошибке все же четко описано.
preg_replace больше не поддерживается в PHP7, вместо этого используйте preg_replace_callback
Но почему тогда ошибка то появляется то нет?

Вообщем заменил в файле Shoutbox.php все прописанные функции preg_replace на preg_replace_callback, вроде работает и ошибок не выдает.  Думаю проблема решена, S.T.A.L.K.E.R. спасибо за подсказку :)

Yarik

Цитата: Snow_Irbis от 05 мая 2019, 13:12:00Но почему тогда ошибка то появляется то нет?
Не видел целиком строчку,эта функция выполняет поиск и замену по регулярному выражению которое там прописано.Вот когда функция срабатывает то в лог и сыпется ошибка об этом.

digger®

Цитата: S.T.A.L.K.E.R. от 05 мая 2019, 13:08:43preg_replace больше не поддерживается в PHP7, вместо этого используйте preg_replace_callback
Где написано, что preg_replace не поддерживается в PHP7?

Цитата: Snow_Irbis от 05 мая 2019, 13:12:00Вообщем заменил в файле Shoutbox.php все прописанные функции preg_replace на preg_replace_callback, вроде работает и ошибок не выдает.  Думаю проблема решена, S.T.A.L.K.E.R. спасибо за подсказку
Нельзя просто заменить одну функцию на другую, у них разный синтаксис. Теперь, проблемные строки просто не работают. С таким же успехом можно было просто удалить их.

Yarik

Цитата: digger® от 05 мая 2019, 18:04:48де написано, что preg_replace не поддерживается в PHP7?
Не так написал :facepalm: ,с семерки удалена поддержка модификатора /e,начиная с версии 5.5.0 он считается устаревшим.
В интернете я находил инструкции по переделке хорошие и подробные.

Snow_Irbis

Цитата: digger® от 05 мая 2019, 18:04:48Нельзя просто заменить одну функцию на другую, у них разный синтаксис. Теперь, проблемные строки просто не работают. С таким же успехом можно было просто удалить их.


Так и есть  :(  спустя время начали появляться ошибки такого плана (хотя сам чат функционирует нормально, то есть все сообщения отправляются, а раньше то отправлялись то нет), но пока чат на всякий случай отключил

http://site.org/index.php?action=shoutbox;sa=send;sesc;xml;row=1
2: preg_replace_callback(): Requires argument 2, 'preg_replace_callback('/(.{59})/u', '\$1< >', '$1')', to be a valid callback
Файл: /var/www/user/data/www/site.org/Sources/Shoutbox.php
Строка: 316