Каковы причины, по которым PHP отображает ошибки даже при использовании error_reporting(0)?

StackOverflow https://stackoverflow.com/questions/78296

  •  09-06-2019
  •  | 
  •  

Вопрос

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

я пытался

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

безуспешно.

Это было полезно?

Решение

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

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

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


Судя по вашему комментарию, ваша ошибка...

Ошибка анализа:Синтаксическая ошибка, неожиданная t_variable, ожидая ',' или ';' In /usr/home/redacted/public_html/dev.php в строке 11

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

Чтобы исправить это, необходимо изменить отчеты об ошибках на уровне системы.Например, на Apache вы можете разместить...

php_value error_reporting 0

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

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

Другие советы

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

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

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

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

Используйте log_errors, чтобы они регистрировались, а не отображались.

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

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

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

php -l YOUR_FILE_HERE.php

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

PHP Parse error:  syntax error, unexpected '}' in Connection.class.php on line 31

Просто добавьте приведенный ниже код в свой index.php файл:

ini_set('display_errors', False);
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top