Я очень хочу обновить несколько наших серверов до PHP 5.3. Это было бы готово для Zend Framework 2, а также для кажущихся обновлений производительности. К сожалению, у меня на этих серверах есть большое количество устаревшего кода, который со временем будет исправлен, но не все могут быть исправлены до миграции. Я рассматриваю обновление, но отключая устаревшую функциональную ошибку на всех, кроме нескольких сайтах разработки, где я могу начать работать с обновлением старого кода.
error_reporting(E_ALL ^ E_DEPRECATED);
Есть ли фундаментальная причина, почему это было бы плохой идеей?
Если вы еще не прочитали руководство по миграции с особым упором на обратные несанкционированные изменения и удаленные расширения .
У вас больше проблем, чем устаревших. Игнорирование E_DEPRECATED
не будет достаточным. Из-за несовместимых изменений будут также другие типы ошибок или, может быть, еще хуже, неожиданные действия.
Вот простой пример:
<?php function goto($line){ echo $line; } goto(7); ?>
Этот код будет работать нормально и выводить 7
в PHP 5.2.x, но даст вам ошибку синтаксического анализа в PHP 5.3.x.
Что вам нужно сделать, это взять каждый элемент в этом руководстве и проверить свой код и обновить его там, где это необходимо. Чтобы сделать это быстрее, вы можете игнорировать устаревшие функции на первом этапе и просто отключить отчет об ошибках для E_DEPRECATED
, но вы не можете предположить, что при переносе на другую основную ветвь PHP вы получите только некоторые безобидные предупреждения.
Также не забывайте о своем взломе и исправьте устаревшие проблемы как можно скорее.
С Уважением,
Алинь
Примечание. Я попытался ответить на вопрос с практической точки зрения, поэтому, пожалуйста, не говорите мне, что игнорирование предупреждений является плохим. Я знаю это, но я также знаю, что время – это не бесконечный ресурс.
Ну, вы можете забыть, что вы установили флаг и задаетесь вопросом, почему ваше приложение ломается в следующем обновлении PHP. Это может быть очень неприятно для отладки приложения без надлежащей отчетности об ошибках. Это одна из причин, о которой я могу думать.
Однако, если вы это сделаете, запишите его где-нибудь. Это может спасти вас за пару часов до того, как вы вообще запомните установку флага.
Я полагаю, у вас есть какой-то тестовый сервер? Если нет, вы действительно должны установить и проверить свой код в PHP 5.3. Если ваш код полностью протестирован на модуле, тестирование будет занимать секунды, и его исправление будет довольно быстрым, так как модульные тесты скажут вам, где искать. Если нет, то подумайте о том, чтобы сделать Unit Testing все приоритетным перед следующей версией, и тем временем пройти через все это, сначала с E_DEPRECATED
предупреждениями E_DEPRECATED
и исправить все, что появляется, а затем снова включить его, как только у вас будет время. Вы также можете запустить глобальную функцию поиска и замены для упрощения исправления ошибок.