Язык PHP продолжает стремительно развиваться и с выходом версии PHP 5.3 большинство разработчиков столкнулись с интересной ошибкой:
Deprecated: Function eregi() is deprecated in …
Что такое DEPRECATED? Это некоторые параметры, функции и возможности, которые обозначены как НЕИСПОЛЬЗУЕМЫЕ и в последующих версиях будут УДАЛЕНЫ.
Для начала конечно можно временно (повторюсь временно) можно выключить в файле php.ini данные предупреждения что бы сайт восстановил работоспособность и не выдавали так же ошибки вывода заголовков Headers (популярная ошибка новичков headers already sent) В PHP 5.3. для этого добавлено 2 уровня ошибок (error level) E_DEPRECATED и E_USER_DEPRECATED, которые и управляют выводом предупреждений (Warning)
Полный список изменений вы можете увидеть на официальном сайте PHP Deprecated features in PHP 5.3.x
Следующие директивы php.ini будут отмечены как НЕИСПОЛЬЗУЕМЫЕ (DEPRECATED) в PHP 5.3 и удалены в PHP 6.0.0
- define_syslog_variables — теперь всегда OFF.
- register_globals — теперь всегда OFF. Наконец-то! =)
- register_long_arrays — $HTTP_*_VARS навсегда уйдут в небытие.
- safe_mode — безопасный режим. По умолчанию OFF.
- magic_quotes_gpc
magic_quotes_runtime
magic_quotes_sybase — будут удалены при переходе версии.
- Теперь в php.ini файле нельзя будет применять комментарии, начинающиеся с #
Так же следующие функции:
- call_user_method() (используйте call_user_func())
- call_user_method_array() (используйте call_user_func_array())
- ereg() (используйте preg_match())
- ereg_replace() (используйте preg_replace())
- eregi() (используйте preg_match() с модификатором ‘i’)
- eregi_replace() (используйте preg_replace() с модификатором ‘i’)
- set_magic_quotes_runtime() и ее синоним(alias) 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’)
- mysql_db_query() (используйте mysql_select_db() и mysql_query())
- mysql_escape_string() (используйте mysql_real_escape_string())
И следующие возможности:
- В new передача параметра по ссылке в переменную
- Вызов call-time функций, методов и классов по ссылке
- Использование {} для указания смещения внутри строки. Теперь это можно сделать с помощью [] (как в массиве)
Следует позаботиться о замене функций аналогами, описанными выше и переписать скрипты.