С гнилой сердцевиной

Mar 4, 02:19 am Категория:

Тот неловкий момент, когда установленная несколько лет назад CMS пишет нехорошие слова при обновлении серверного ПО: Deprecated: Function set_magic_quotes_runtime() is deprecated in … Если не вдаваться в детали, то суть данного сообщения в том, что нужно менять этот мир одним из трёх способов: откатывать серверное ПО, ставить свежую версию CMS или редактировать код существующей.

Откат ПО как правило выходом не является, т.к. хостингом рулит провайдер и если в панели администратора нет опции “Использовать PHP 4.X, то первый способ отпадает. Второй способ подходит в случае, если используемый движок ещё развивается, новая версия вышла позднее выпуска новой версии PHP и при разработке сайта не использовались приёмы, которые устарели в новой версии. В противном случае есть риск просто сменить одни предупреждения на другие. Поэтому остаётся третий способ: править код. Он позволяет избавиться от надоедливого сообщения и спокойно подготовиться к обновлению CMS.

Указанное в первом абзаце предупреждение как бы намекает, что проблемы в какой-то функции. В том же сообщении указывается содержащий данную функцию файл и строка, на которой она расположена. У TextPattern мне встретилось два таких файла:

  • textpattern/lib/txplib_db.php
  • textpattern/include/txp_auth.php

В первом файле претензии к set_magic_quotes_runtime() в самом начале файла. Предупреждение исчезнет в результате замены set_magic_quotes_runtime(0); на ini_set(‘magic_quotes_runtime’, 0);

Во втором файле дважды встречается функция split. Думаю, строка зависит от версии и вместо указания номера советую воспользоваться поиском. Оба её вхождения
нужно просто заменить на explode. Вообще для борьбы со split существует простое правило: если в функции присуствует регулярное выражение, её нужно менять на preg_split, а если нет, то на explode.

 

Комментарии

2017-08-24 12:27 pm , Оставь комментарий