PHP error_reporting включен или выключен

У меня возникли проблемы с отключением устаревших предупреждений на короткий период времени. Они исходят из мусорного скрипта, над которым я вынужден некоторое время работать, в котором они чрезмерно используют preg_replace с модификатором /e. Вместо того, чтобы идти и исправлять все места, которые делают это, мне показалось лучшей идеей отключить устаревшие предупреждения, пока я работаю над этим.

Проблема, как ни странно, заключается в том, что функция error_reporting в начале указанного скрипта, по-видимому, имеет только эффект «вкл / выкл». То есть я могу полностью отключить отчетность с помощью error_reporting(0) и включить все это с помощью чего-то вроде error_reporting(E_ALL). Но использование любого из следующих параметров не влияет. Я все еще получаю более 100 устаревших предупреждений в верхней части моей страницы.

<?php
error_reporting(E_ALL ^ E_DEPRECATED);
error_reporting(E_ALL & ~E_DEPRECATED);
error_reporting(E_ALL & ~E_NOTICE & ~E_DEPRECATED);

Я проверил, что для моего файла php.ini установлено значение E_ALL & ~E_DEPRECATED) (24575), и оно отображается как таковое в phpinfo(). Файл .htaccess в корне проекта пуст. Почему там вообще один, я не знаю.

PHP 5.5.9-1убунту4.4

Любые идеи?


person Scotty C.    schedule 14.10.2014    source источник
comment
Это большой проект? Я имею в виду, может быть, в каком-то другом файле php error_reporting перезаписан. Попробуйте сделать только один index.php, установите error_reporting(E_ALL & ~E_DEPRECATED); и вызовите устаревшую функцию, например eregi. Пожалуйста, скажите мне, это устаревшее появляется.   -  person vaso123    schedule 14.10.2014
comment
Вместо того, чтобы идти и исправлять все места, которые делают это - лучше сделать это сейчас, чем когда поддержка будет полностью удалена.   -  person The Blue Dog    schedule 14.10.2014
comment
Я бы сказал, что, вероятно, есть другая страница или скрипт, который устанавливает для error_reporting другое значение. Вы можете вызвать error_reporting() без аргументов, чтобы получить текущее значение. Установите его на что-нибудь и убедитесь, что значение не изменилось после включения других файлов.   -  person Jonathan Kuhn    schedule 14.10.2014
comment
@JonathanKuhn Это оказался правильный ответ. error_reporting сбрасывается повсеместно с различными настройками. Если вы отправите это как ответ, я приму и проголосую за него.   -  person Scotty C.    schedule 15.10.2014
comment
@TheBlueDog Обычно я бы с этим согласился, но это не мой проект, поэтому я хочу исправить его ошибки примерно так же, как хочу найти все дыры в безопасности в Wordpress.   -  person Scotty C.    schedule 15.10.2014


Ответы (3)


Я бы сказал, что, вероятно, есть другая страница или скрипт, который устанавливает для error_reporting другое значение. Вы можете вызвать error_reporting() без аргументов, чтобы получить текущее значение. Установите его на что-нибудь и убедитесь, что значение не изменилось после включения других файлов.

person Jonathan Kuhn    schedule 14.10.2014

error_reporting(E_ALL | E_STRICT); 

просто говорит: «Эй, регистрируйте такие ошибки/предупреждения/уведомления»

Я думаю, вам понадобится -

ini_set('display_errors', '0');

Попробуйте.

person crazykru    schedule 14.10.2014
comment
Также, если у вас есть доступ к php.ini, найдите display_errors и отключите его. - person crazykru; 14.10.2014

Решение:

ini_set("display_errors",'off');

Используйте это в своем php-скрипте. Это скроет предупреждения, поступающие на вашу страницу.

person Rohit Jindal    schedule 14.10.2014