Deprecated: Function ereg_replace() is deprecated
После перехода PHP с ветки PHP 5.2 (php52-5.2.17) на PHP 5.3 на части сайтов вылезли ошибки Deprecated: Function ereg_replace() is deprecated, хорошо что первоначальный переход я начал на тестовом сервере и было время подготовится, оценить размеры работ для корректного перехода уже на рабочем сервере.
И так, в ветки PHP 5.3 начали борьбу с некоторыми старыми функциями, для начала они выводят предупреждение и сообщают что функция уже не поддерживается и в будущем будет вообще удалена. Но в версии 5.3 еще можно избежать проблем включив режим поддержки старых функций
Это делается в разделе [mbstring]
; overload(replace) single byte functions by mbstring functions. ; mail(), ereg(), etc are overloaded by mb_send_mail(), mb_ereg(), ; etc. Possible values are 0,1,2,4 or combination of them. ; For example, 7 for overload everything. ; 0: No overload ; 1: Overload mail() function ; 2: Overload str*() functions ; 4: Overload ereg*() functions ; http://php.net/mbstring.func-overload ;mbstring.func_overload = 0 [mbstring] mbstring.func_overload = 7 |
Указав значение mbstring.func_overload равное 7 мы разрешаем все старые функции.
Но это решение можно использовать только как временное, хотя зачем оно вообще?
Ведь можно пока посидеть на ветке 5.2.
Более правильное решение — это замена в коде старых функций на новые, в случае использования ereg и eregi сделать это довольно просто.
было по-старому ereg("language",$uri) стало по-новому preg_match("/language/",$uri) если было eregi, то добавляем i после разделителя-слеша preg_match("/language/i",$uri) |
Вот такими нехитрыми манипуляциями мы переходим на следующий уровень, уровень 5.3
Фразы: проблемы с PHP 5.3, после перехода на PHP 5.3, замена старых функций 5.2, замена ereg
было по-старому
ereg(«language»,$uri)
стало по-новому
preg_match(«/language/»,$uri)
Не проходит это.
Печально,
а ссылочку пришлось убрать за откровенную рекламу
Печально-то печально, но не может быть такого, что на одном сервере с PHP5.3 работает, а на другом — нет. Ошибка?
Может быть все что угодно,
это рабочая конструкция, советую почитать оригинальные мануалы по PHP
И еще, в имени пользователя не нужно писать сайт (хотя бы убрать .ru)
>И еще, в имени пользователя не нужно писать сайт (хотя бы убрать .ru)
Да это автозаполнение. Один раз комментарий написал, теперь в каждом данные пользователя из первого указываются
Да и вообще, поотрывать бы этим разработчикам руки. Ну кому мешали «старые» функции? Сиди теперь, ковыряй древние движки, восстанавливай работоспособность сайтов.
Новые функции безопаснее и быстрее и правильнее работают, так что плюс есть. А вот что сайты нужно подправлять это конечно плохо. Я возился пару дней с сайтами на OSC, зато с WordPress нет проблем
Изменил значение mbstring.func_overload в php.ini и все старые функции отлично работают на PHP 5.3.