По каким причинам PHP будет выводить ошибки, даже с error_reporting (0)? - PullRequest
11 голосов
/ 17 сентября 2008

Каковы некоторые причины, по которым PHP заставляет отображать ошибки, независимо от того, что вы говорите, чтобы они отключались?

Я пытался

error_reporting(0);
ini_set('display_errors', 0); 

без удачи.

Ответы [ 8 ]

15 голосов
/ 17 сентября 2008

Обратите внимание на предостережение в руководстве на http://uk.php.net/error_reporting:

Большинство ошибок E_STRICT оцениваются во время компиляции, поэтому такие ошибки не сообщаются в файле, где error_reporting улучшен и включает ошибки E_STRICT (и наоборот).

Если ваша базовая система настроена на сообщение об ошибках E_STRICT, они могут быть выведены до того, как ваш код даже будет рассмотрен. Не забывайте, что error_reporting / ini_set являются оценками во время выполнения, и все, что выполнено на этапе «перед запуском», не будет иметь эффекта.


Исходя из вашего комментария, ваша ошибка ...

Ошибка разбора: синтаксическая ошибка, неожиданный T_VARIABLE, ожидание ',' или ';' в /usr/home/REDACTED/public_html/dev.php в строке 11

Тогда применяется та же общая концепция. Ваш код никогда не запускается, так как он синтаксически неверен (вы забыли «;»). Поэтому ваше изменение в отчете об ошибках никогда не встречается.

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

php_value error_reporting 0

в файле .htaccess для подавления их всех, но это зависит от конфигурации системы.

Прагматично, не пишите файлы с синтаксическими ошибками:)

3 голосов
/ 18 сентября 2008

Чтобы предотвратить отображение ошибок, вы можете

  • Запись в .htaccess: php_flag display_errors 0
  • Разделите ваш код на отдельные модули, где Основной (родительский) PHP-файл устанавливает только error_logging, а затем включить () другие файлы.
1 голос
/ 10 июня 2013

Используется ли set_error_handler() где-нибудь в вашем скрипте? Это переопределяет error_reporting(0).

1 голос
/ 02 января 2011

Используйте phpinfo , чтобы найти загруженный php.ini и отредактировать его, чтобы скрыть ошибки. Он переопределяет то, что вы положили в свой сценарий.

0 голосов
/ 16 декабря 2017

Просто добавьте следующий код в файл index.php :

ini_set('display_errors', False);
0 голосов
/ 07 декабря 2015

Прагматично, не пишите файлы с синтаксическими ошибками:)

Чтобы убедиться, что в вашем файле нет синтаксических ошибок, выполните следующее:

php -l YOUR_FILE_HERE.php

Это выведет что-то вроде этого:

PHP Parse error:  syntax error, unexpected '}' in Connection.class.php on line 31
0 голосов
/ 19 сентября 2008

Если параметр указан в Apache с использованием php_admin_value, его нельзя изменить в .htaccess или во время выполнения. Смотри: http://docs.php.net/configuration.changes

0 голосов
/ 17 сентября 2008

Используйте log_errors для их регистрации вместо отображения

...