PHP – ошибка Deprecated: Function eregi() is deprecated in… [решение]
После установки новой версии PHP v5.3.0, начала появляться ошибка:
Deprecated: Function eregi() is deprecated in ...file... on line 33
У меня, эта ошибка появлялась в движке ExpressionEngine - в админку зайти не возможно, другие скрипты тоже глючат, а некоторые не работают.
Deprecated: Function eregi() – причина возникновения
Как оказалось, с выходом версии PHP 5.3.0 некоторые функции были признаны устаревшими/отстойными/ненадежными, и были заменены на другие. Очень много современных скриптов уже переписаны с учетом новых функций, но что делать, если у меня старый скрипт, и по каким-то причинам не могу его переписать?
Решение проблемы
Проблему можно решить несколькими способами:
- Дождаться обновлений / отписать разработчикам скриптов
- Откатиться до предыдущей версии PHP
- Настроить текущую версию PHP
Как оказалось, разработчики PHP решили оставить директиву для включения "старых" функций, скорее всего это сделано временно, для того, чтобы все могли плавно переписать свои скрипты. Но нам необходимо, чтоб всё работало сейчас - воспользуемся этой директивой:
И так, находим файл php.ini, а в нем строки:
; 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
;mbstring.func_overload = 0
Последняя строка - и есть наш параметр mbstring.func_overload
. Раскомментируем его.
Значение параметра должно ровняться сумме чисел включаемых функций.
Например, чтоб включить функции mail() и ereg*() - необходимо вписать туда 1+4=5
Я включу все старые функции: mbstring.func_overload = 7
После сохранения файла настроек, производим перезагрузку сервера apache:
service httpd restart
Все. Должно работать.
Комментарии (2)
Спасибо Вам! Мне помогло, все работает)
Спосиба помогли.