Каковы причины, почему PHP будет отображать ошибки, даже с error_reporting(0)?
Каковы некоторые причины, по которым PHP заставляет отображать ошибки, независимо от того, что вы говорите, чтобы они отключались?
я пытался
error_reporting(0);
ini_set('display_errors', 0);
без удачи
8 ответов
Обратите внимание на предостережение в руководстве по адресу 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, чтобы подавить их все, но это зависит от конфигурации системы.
Прагматично, не пишите файлы с синтаксическими ошибками:)
Чтобы предотвратить отображение ошибок, вы можете
- Пишите в.htaccess: php_flag display_errors 0
- Разделите ваш код на отдельные модули, в которых основной (родительский) PHP-файл устанавливает только error_logging, а затем включите () другие файлы.
Является set_error_handler()
используется где-нибудь в вашем сценарии? Это переопределяет error_reporting(0)
Используйте phpinfo, чтобы найти загруженный php.ini и отредактировать его, чтобы скрыть ошибки. Это отменяет то, что вы положили в свой сценарий.
Просто добавьте следующий код в ваш файл index.php:
ini_set ('display_errors', False);
Если параметр указан в 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
Надеюсь это поможет.