При переходе с версии PHP 5.2 на PHP 5.3 у многих возникает ошибка вида
Deprecated: Function ereg_replace() is deprecated in Z:\home\site\www\modules\general.php on line 218 Deprecated: Function ereg_replace() is deprecated in Z:\home\site\www\modules\general.php on line 219 Deprecated: Function ereg_replace() is deprecated in Z:\home\site\www\modules\general.php on line 220 Deprecated: Function ereg_replace() is deprecated in Z:\home\site\www\modules\general.php on line 221 Deprecated: Function ereg_replace() is deprecated in Z:\home\site\www\modules\general.php on line 222Причина возникновения ошибки в том, что в новых версиях PHP функция ereg заменена на функцию preg_match а так же следует вместо
- call_user_method() (следует использовать call_user_func() )
- call_user_method_array() (следует использовать call_user_func_array())
- define_syslog_variables()
- dl()
- ereg() (следует использовать preg_match())
- ereg_replace() (следует использовать preg_replace())
- eregi() (следует использовать preg_match() с модефикатором ‘i’)
- eregi_replace() (следует использовать preg_replace() с модификатором ‘i’ )
- set_magic_quotes_runtime() magic_quotes_runtime()
- session_register() (следует использовать $_SESSION )
- session_unregister() (следует использовать $_SESSION )
- session_is_registered() (следует использовать $_SESSION )
- set_socket_blocking() (следует использовать stream_set_blocking() )
- split() (следует использовать preg_split() )
- spliti() (следует использовать preg_split() с модификатором ‘i’ )
- sql_regcase()
- mysql_db_query() (следует использовать mysql_select_db() и mysql_query() )
- mysql_escape_string() (следует использовать mysql_real_escape_string() )
Есть два варианта решения этой неприятности (мне больше нравится второй :) как самый простой, но возможно не подойдет для тех кто получил эту ошибку на хостинге)
Вариант № 1 :
Заменить во всем коде старые функции на приветствующие новые.
Вариант № 2 :
Открываем файл настройки 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 ; http://php.net/mbstring.func-overload ; mbstring.func_overload = 0
0 – Оставить все без изменений.
1-4 Включить одну из функций.
7 – Включить сразу все функции.
Слово “включить” тут не совсем корректно. Речь идет об включении поддерживания старых функций, при этом новые будут отключены. Если у Вас нету никаких ошибок, то лучше их не включать.
Все это пишется в нижней строке, притом, главное, не забудьте убрать символ “;” в начале строки. Т.е. если Вы хотите, что бы были включены все функции, то нижняя строка примет вид:
mbstring.func_overload = 7
Немає коментарів:
Дописати коментар