Отключение строгих стандартов в PHP 5.4

В настоящее время я запускаю сайт на php 5.4, до этого я запускал свой сайт в 5.3.8. К сожалению, php 5.4 сочетает в себе E_ALL и E_STRICT, что означает, что моя предыдущая настройка для error_reporting теперь не работает. Мое предыдущее значение было E_ALL & ~E_NOTICE & ~E_STRICT Должен ли я просто включать значения по одному за раз?

У меня слишком много ошибок, и файлы содержат слишком много кода для исправления.

Ответ 1

Как отмечают комментаторы, лучшим вариантом является исправление ошибок, но с ограниченным временем или знаниями, что не всегда возможно. В вашем изменении php.ini

error_reporting = E_ALL

to

error_reporting = E_ALL & ~E_NOTICE & ~E_STRICT

Если у вас нет доступа к php.ini, вы можете поместить его в свой файл .htaccess:

php_value error_reporting 30711

Это значение E_ALL (32767) и удаление значений E_STRICT (2048) и E_NOTICE (8).

Если у вас нет доступа к файлу .htaccess или он не активирован, вам, вероятно, нужно будет помещать его в начало раздела PHP любого script, который загружается из вызова браузера:

error_reporting(E_ALL & ~E_STRICT & ~E_NOTICE);

Один из них должен помочь вам использовать программное обеспечение. Замечания и строгий материал - это индикаторы проблем или потенциальных проблем, хотя вы можете обнаружить, что некоторые из кода работают неправильно в PHP 5.4.

Надеюсь, что это поможет.

Ответ 2

.htaccess php_value работает, только если вы используете PHP Server API в качестве модуля веб-сервера Apache. Используйте синтаксис IfModule:

# PHP 5, Apache 1 and 2.
<IfModule mod_php5.c>
    php_value error_reporting 30711
</IfModule>

Если вы используете PHP Server API CGI/FastCGI, используйте

ini_set('error_reporting', 30711);

или

error_reporting(E_ALL & ~E_STRICT & ~E_NOTICE);

в вашем PHP-коде, или файлы конфигурации PHP.user.ini | Изменение php.ini:

error_reporting = E_ALL & ~E_STRICT & ~E_NOTICE

на вашем виртуальном хосте, на уровне сервера.

Ответ 3

Это сработало для меня, когда я установил error_reporting в двух местах одновременно

где-то в PHP-коде

ini_set('error_reporting', 30711);


и в файле .htaccess

php_value error_reporting 30711

Ответ 4

Если вам также нужно отключить E_DEPRACATED, используйте:

php_value error_reporting 22527

В моем случае CMS Made Simple жаловался: "E_STRICT включен в error_reporting", а также "E_DEPRECATED включен". Добавление одной строки в .htaccess устраняет обе неверные конфигурации.

Ответ 5

Направляйтесь вверх, вам может потребоваться перезапустить LAMP, Apache или все, что вы используете, чтобы это повлияло. Некоторое время на этом укладывали наши мозги, казалось, не влияло, пока службы не были перезапущены, по-видимому, потому, что веб-сайт был кешированием.