Ошибка Deprication или переход на версию PHP 5.3
В последнее время все больше и больше приходит писем от наших посетителей, которые установив последнюю версию PHP 5.3.1 получают в работающих проектах подобные ошибки:
Deprecated: Function eregi() is deprecated in ...
Неприятная ситуация, когда проект работает и застает врасплох.
Хорошо, что большинство хостеров не так быстро делают переход с версии PHP 5.2. на PHP 5.3.
Но надолго ли?
Что такое 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 файле нельзя будет применять коментарии, начинающиеся с #
Так же следующие функции:
И следующие возможности:
-
В new передача параметра по ссылке в переменную
-
Вызов call-time функций, методов и классов по ссылке
-
Использование {} для указания смещения внутри строки. Теперь это можно сделать с помощью [] (как в массиве)
Следует позаботиться о замене функций аналогами, описанными выше и переписать скрипты.