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

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

я пытался

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

без везения.

Я не знаю этого ответа, но, если возможно, это может помочь, если вы приведете пример ошибки, которая отображалась при отключенной отчетности.

Jeremy 17.09.2008 03:23

Ошибка синтаксического анализа: синтаксическая ошибка, неожиданный T_VARIABLE, ожидание ',' или ';' в /usr/home/johnq/public_html/dev.php в строке 11 единственный PHP в dev.php следующий: <? php error_reporting (0); эхо "тест" $ test = "123"; ?>

Valdemarick 17.09.2008 03:28

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

GZipp 02.01.2011 18:59
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
11
3
47 949
8
Перейти к ответу Данный вопрос помечен как решенный

Ответы 8

Ответ принят как подходящий

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

Most of E_STRICT errors are evaluated at the compile time thus such errors are not reported in the file where error_reporting is enhanced to include E_STRICT errors (and vice versa).

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


Основываясь на вашем комментарии, ваша ошибка ...

Parse error: syntax error, unexpected T_VARIABLE, expecting ',' or ';' in /usr/home/REDACTED/public_html/dev.php on line 11

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

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

php_value error_reporting 0

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

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

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

<? php ini_set ('error_log', '/ error_log'); ini_set ('log_errors', ИСТИНА); эхо "тест" $ test = "123"; ?> К сожалению, по-прежнему вызывает ту же ошибку. Я ищу способ сделать это без изменения php.ini. Это возможно?

Valdemarick 17.09.2008 03:43

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

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

Если параметр указан в Apache с помощью php_admin_value, его нельзя изменить в .htaccess или во время выполнения.

См .: Как изменить настройки конфигурации

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

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

Pragmatically, don't write files with syntax errors :)

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

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);

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