Ошибки в логах при переходе на PHP 5.6 с 5.3 у старой версии форума
Правила форума
Местная Конституция | Шаблон запроса | Документация (phpBB3) | Переход на 3.0.6 и выше | FAQ-3 (phpbb3) | Как задавать вопросы | Как устанавливать моды
Ваш вопрос может быть удален без объяснения причин, если на него есть ответы по приведённым ссылкам (а вы рискуете получить предупреждение
).
Местная Конституция | Шаблон запроса | Документация (phpBB3) | Переход на 3.0.6 и выше | FAQ-3 (phpbb3) | Как задавать вопросы | Как устанавливать моды
Ваш вопрос может быть удален без объяснения причин, если на него есть ответы по приведённым ссылкам (а вы рискуете получить предупреждение
Ошибки в логах при переходе на PHP 5.6 с 5.3 у старой версии форума
Приветствую.
Имею очень старую версию движка phpBB3 (3.0.1). По определенным причинам обновить нет возможности.
На хостинге был переход с php 5.3 (форум работал нормально) на php 5.6 - в логах начала появляться ошибка:
[11-Sep-2015 13:19:14 Europe/Helsinki] PHP Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /home/lawportal/public_html/phpBB3/includes/bbcode.php on line 472
Вопрос - можно ли исправить эту ошибку простым редактированием кода?
P.S. Про то, что нужнообновиться и валиназадна5.3 - знаю.
Вопрос в том, можно ли решить проблему (1 ошибка) редактированием кода.
Спасибо.
Имею очень старую версию движка phpBB3 (3.0.1). По определенным причинам обновить нет возможности.
На хостинге был переход с php 5.3 (форум работал нормально) на php 5.6 - в логах начала появляться ошибка:
[11-Sep-2015 13:19:14 Europe/Helsinki] PHP Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /home/lawportal/public_html/phpBB3/includes/bbcode.php on line 472
Вопрос - можно ли исправить эту ошибку простым редактированием кода?
P.S. Про то, что нужнообновиться и валиназадна5.3 - знаю.
Вопрос в том, можно ли решить проблему (1 ошибка) редактированием кода.
Спасибо.
-
Sheer
- Former team member
- Сообщения: 12113
- Стаж: 19 лет 7 месяцев
- Откуда: Калининград не Кенигсберг
- Благодарил (а): 54 раза
- Поблагодарили: 2756 раз
Re: Ошибки в логах при переходе на PHP 5.6 с 5.3 у старой версии форума
Попробуй
Найти
Заменить на
Найти
Код: Выделить всё
$tpl = preg_replace('/{L_([A-Z_]+)}/e', "(!empty(\$user->lang['\$1'])) ? \$user->lang['\$1'] : ucwords(strtolower(str_replace('_', ' ', '\$1')))", $tpl); Код: Выделить всё
$tpl = preg_replace_callback(
'/{L_([A-Z_]+)}/',
function ($matches) { global $user; return (!empty($user->lang[$matches[1]])) ? $user->lang[$matches[1]] : ucwords(strtolower(str_replace('_', ' ', $matches[1]))); },
$tpl
); Общие ошибки новичков (07.11.2005) & Как задавать вопросы
Мини FAQ
Если ничто другое не помогает, прочтите, наконец, инструкцию!
"Никакая инструкция не может перечислить всех обязанностей должностного лица, предусмотреть все отдельные случаи и дать вперёд соответствующие указания, а поэтому господа инженеры должны проявить инициативу и, руководствуясь знаниями своей специальности и пользой дела, принять все усилия для оправдания своего назначения".
Циркуляр Морского технического комитета №15 от 29.11.1910 г.
-
LavIgor
- Former team member
- Сообщения: 3468
- Стаж: 12 лет 4 месяца
- Благодарил (а): 41 раз
- Поблагодарили: 935 раз
Re: Ошибки в логах при переходе на PHP 5.6 с 5.3 у старой версии форума
Biba, приведённый Вами код не является ошибкой. Посему ничего править не нужно.
Просто старый движок (до phpBB 3.2) полагался на функцию (точнее на модификатор), которая в PHP 5.6 стала deprecated (устарела, выводится предупреждение), а в PHP 7 и вовсе была удалена.
Ошибку можно смело игнорировать или подавить соответствующими настройками.
Просто старый движок (до phpBB 3.2) полагался на функцию (точнее на модификатор), которая в PHP 5.6 стала deprecated (устарела, выводится предупреждение), а в PHP 7 и вовсе была удалена.
Ошибку можно смело игнорировать или подавить соответствующими настройками.
Версия 2008 года, так? И почему тема в поддержке другой ветки?
Re: Ошибки в логах при переходе на PHP 5.6 с 5.3 у старой версии форума
Хорошо, тогда вопрос, как решить проблему (временно, до обновления на новую версию).
1 вариант - откатиться назад (возможно, не на PHP 5.3, а на PHP 5.4 или PHP 5.5 - если там этот модификатор поддерживается)
2 вариант - отключить логирование на сервере (проблема именно из-за разрастания error.log - сайт работает нормально)
1 вариант - откатиться назад (возможно, не на PHP 5.3, а на PHP 5.4 или PHP 5.5 - если там этот модификатор поддерживается)
2 вариант - отключить логирование на сервере (проблема именно из-за разрастания error.log - сайт работает нормально)
-
LavIgor
- Former team member
- Сообщения: 3468
- Стаж: 12 лет 4 месяца
- Благодарил (а): 41 раз
- Поблагодарили: 935 раз
Re: Ошибки в логах при переходе на PHP 5.6 с 5.3 у старой версии форума
Можно выставить уровень ошибок без учёта E_DEPRECATED.
Найдите в Вашем файле Корень_конференции/common.php строчку
error_reporting(E_ALL ^ E_NOTICE); и замените её на современный вариант:
Код: Выделить всё
if (!defined('E_DEPRECATED'))
{
define('E_DEPRECATED', 8192);
}
$level = E_ALL & ~E_NOTICE & ~E_DEPRECATED;
error_reporting($level); Re: Ошибки в логах при переходе на PHP 5.6 с 5.3 у старой версии форума
LavIgor, большое спасибо. Ваш код действительно позволил убрать указанную выше проблему.
Но, после включения логирования выскачила новая ошибка (или предупреждение):
[13-Sep-2015 06:51:07 Europe/Helsinki] PHP Deprecated: Function set_magic_quotes_runtime() is deprecated in /home/lawportal/public_html/phpBB3/style.php on line 30
[13-Sep-2015 06:51:46 Europe/Helsinki] PHP Strict Standards: Non-static method utf_normalizer::nfkc() should not be called statically in /home/lawportal/public_html/phpBB3/includes/utf/utf_tools.php on line 1663
Не подскажите, что это значит и можно ли убрать?
Спасибо.
Но, после включения логирования выскачила новая ошибка (или предупреждение):
[13-Sep-2015 06:51:07 Europe/Helsinki] PHP Deprecated: Function set_magic_quotes_runtime() is deprecated in /home/lawportal/public_html/phpBB3/style.php on line 30
[13-Sep-2015 06:51:46 Europe/Helsinki] PHP Strict Standards: Non-static method utf_normalizer::nfkc() should not be called statically in /home/lawportal/public_html/phpBB3/includes/utf/utf_tools.php on line 1663
Не подскажите, что это значит и можно ли убрать?
Спасибо.
Перенесено из форума Поддержка phpBB 3.1.x в форум Поддержка phpBB 3.0.х 13.09.2015 4:27 модератором rxu
-
LavIgor
- Former team member
- Сообщения: 3468
- Стаж: 12 лет 4 месяца
- Благодарил (а): 41 раз
- Поблагодарили: 935 раз
Re: Ошибки в логах при переходе на PHP 5.6 с 5.3 у старой версии форума
Biba, deprecated должны были уйти после правки выше.
Чтобы убрать E_STRICT, есть ещё одна версия кода выше.
Чтобы убрать E_STRICT, есть ещё одна версия кода выше.
Код: Выделить всё
if (!defined('E_DEPRECATED'))
{
define('E_DEPRECATED', 8192);
}
$level = E_ALL & ~E_NOTICE & ~E_DEPRECATED;
if (version_compare(PHP_VERSION, '5.4.0-dev', '>='))
{
// PHP 5.4 adds E_STRICT to E_ALL.
// Our utf8 normalizer triggers E_STRICT output on PHP 5.4.
// Unfortunately it cannot be made E_STRICT-clean while
// continuing to work on PHP 4.
// Therefore, in phpBB 3.0.x we disable E_STRICT on PHP 5.4+,
// while phpBB 3.1 will fix utf8 normalizer.
// E_STRICT is defined starting with PHP 5
if (!defined('E_STRICT'))
{
define('E_STRICT', 2048);
}
$level &= ~E_STRICT;
}
error_reporting($level); Re: Ошибки в логах при переходе на PHP 5.6 с 5.3 у старой версии форума
LavIgor, спасибо за ещё одну версию кода - пока его не пробовал, сделаю это немного позже.
Предварительно хотел поинтересоваться - есть ли смысл вообще убирать ошибку strict или оставить как есть (она появляется редко, так что error.log не быстро разрастается).
Или может быть есть смысл просто откатиться на PHP 5.3? Есть ли какие-то минусы у версии 5.3 перед 5.6 (с учетом древней версии моего форума phpBB3 3.0.1)?
Предварительно хотел поинтересоваться - есть ли смысл вообще убирать ошибку strict или оставить как есть (она появляется редко, так что error.log не быстро разрастается).
Или может быть есть смысл просто откатиться на PHP 5.3? Есть ли какие-то минусы у версии 5.3 перед 5.6 (с учетом древней версии моего форума phpBB3 3.0.1)?
-
LavIgor
- Former team member
- Сообщения: 3468
- Стаж: 12 лет 4 месяца
- Благодарил (а): 41 раз
- Поблагодарили: 935 раз
Re: Ошибки в логах при переходе на PHP 5.6 с 5.3 у старой версии форума
Минус в том, что она не поддерживается и может содержать опасные баги.
Но это как использовать, опять же.
В любом случае старые версии phpBB не были заточены под новые версии PHP (которых просто ещё не было на тот момент).
Re: Ошибки в логах при переходе на PHP 5.6 с 5.3 у старой версии форума
А в плане критичности этих ошибок (в т.ч. E_STRICT) - стоит ли избавиться от них, перейдя на PHP 5.3 или они ни на что не влияют, кроме отображения в error.log ?
Спасибо.
Спасибо.
-
LavIgor
- Former team member
- Сообщения: 3468
- Стаж: 12 лет 4 месяца
- Благодарил (а): 41 раз
- Поблагодарили: 935 раз
Re: Ошибки в логах при переходе на PHP 5.6 с 5.3 у старой версии форума
В PHP 5.3 E_STRICT не входит в E_ALL, поэтому по умолчанию эти ошибки подавляются.
Re: Ошибки в логах при переходе на PHP 5.6 с 5.3 у старой версии форума
Ну то есть можно спокойно жить с этой ошибкой (E_STRICT) и оставаться на PHP 5.6 - она ни на что не влияет, правильно я понимаю?
-
LavIgor
- Former team member
- Сообщения: 3468
- Стаж: 12 лет 4 месяца
- Благодарил (а): 41 раз
- Поблагодарили: 935 раз
Re: Ошибки в логах при переходе на PHP 5.6 с 5.3 у старой версии форума
Выше я приводил код подавления ошибок E_STRICT.
В принципе да, конкретно эти ошибки ни на что не влияют.
Будут ли другие при работе старого движка на новой версии PHP, сказать не могу.
Re: Ошибки в логах при переходе на PHP 5.6 с 5.3 у старой версии форума
В продолжение темы:
Исходные данные:
- форум phpBB3 версии 3.0.1 (как писал ранее - по определенным причинам обновить нет возможности)
- версия PHP 5.3
При попытке "Найти сообщения пользователя" (со страницы профиля) выдаёт следующие ошибки:
При этом сообщения находит, но кодировка неверная (и вверху страницы вылазят эти ошибки).
Подскажите, можно ли как-то решить данную проблему?
И чем она вызвана?
Спасибо
Исходные данные:
- форум phpBB3 версии 3.0.1 (как писал ранее - по определенным причинам обновить нет возможности)
- версия PHP 5.3
При попытке "Найти сообщения пользователя" (со страницы профиля) выдаёт следующие ошибки:
Код: Выделить всё
[phpBB Debug] PHP Notice: in file /includes/functions_content.php on line 242: preg_replace() expects parameter 4 to be long, string given
[phpBB Debug] PHP Notice: in file /includes/functions.php on line 3526: Cannot modify header information - headers already sent by (output started at /includes/functions.php:2948)Подскажите, можно ли как-то решить данную проблему?
И чем она вызвана?
Спасибо
Последний раз редактировалось Sheer 16.12.2015 12:24, всего редактировалось 1 раз.
Причина: bb-код
Причина: bb-код

