PHP не отображает ошибки, хотя display_errors = On

У меня есть сервер Ubuntu с Apache2 с PHP 5. В php.ini я устанавливаю error_reporting = E_ALL | E_STRICT error_reporting = E_ALL | E_STRICT и error_reporting = E_ALL | E_STRICT error_reporting = E_ALL | E_STRICT , но PHP все еще не отображает сообщения об ошибках. Я также использую виртуальные хосты Apache.

Кроме того, что может представлять собой самая строгая ошибка отчетности PHP5.3? Я хочу, чтобы мой код был как можно более точным и надежным в будущем.

Вам также необходимо убедиться, что ваш файл php.ini включает следующий набор или ошибки, которые будут отображаться только в журнале, который установлен по умолчанию или указан в конфигурации виртуального хоста.

 display_errors = On 

Файл php.ini – это базовые настройки для всего PHP на вашем сервере, однако их можно легко переопределить и изменить в любом месте в PHP-коде и повлиять на все последующие изменения. Хорошая проверка заключается в том, чтобы добавить директиву display_errors в файл php.ini . Если вы не видите ошибку, но один из них регистрируется, вставьте это вверху файла, вызвав ошибку:

 ini_set('display_errors', 1); error_reporting(E_ALL); 

Если это работает, то что-то более раннее в вашем коде отключает отображение ошибок.

У меня была такая же проблема и, наконец, она была решена. Моя ошибка заключалась в том, что я попытался изменить /etc/php5/cli/php.ini , но затем нашел другой php.ini здесь: /etc/php5/apache2/php.ini , изменил display_errors = On, перезапустил веб-сервер и это сработало!

Может быть, это было бы полезно для кого-то рассеянного, как я.

У меня была такая же проблема на моем виртуальном сервере с Parallels Plesk Panel 10.4.4. Решение было (благодаря Zappa для идеи), установив значение error_reporting в 32767 вместо E_ALL. В Plesk: Главная страница> Подписки> (Выбрать домен)> Настроить> Настройки PHP> error_reporting – Введите пользовательское значение – 32767

Хотя это старый пост … у меня была схожая ситуация, которая вызывала у меня головную боль. Наконец, я решил, что я включаю вспомогательные страницы в index.php с «@include …», «@» скрывает все ошибки, даже если display_errors включен

Когда вы обновляете конфигурацию в файле php.ini, возможно, вам придется перезапустить apache. Попробуйте запустить apachectl restart или apachectl restart apache2ctl restart или что-то в этом роде.

Кроме того, в вашем файле ini убедитесь, что у вас есть display_errors = on , но только в среде разработки, никогда не на производственной машине.

Кроме того, самая строгая отчетность об ошибках – это именно то, что вы указали, E_ALL | E_STRICT E_ALL | E_STRICT . Вы можете найти дополнительную информацию об уровнях ошибок в php docs .

Проверьте флаг error_reporting , должен быть E_ALL , но в некоторой версии Plesk есть кавычки ( "E_ALL" ) вместо ( E_ALL )

Я решил эту проблему удалять цитаты ( " ) в php.ini

из этого:

 error_reporting = "E_ALL" 

к этому:

 error_reporting = E_ALL 

У меня была та же проблема, но я использовал ini_set('display_errors', '1'); внутри самого неисправного скрипта, поэтому он никогда не срабатывает при ошибках фатального / синтаксического анализа. Наконец, я решил это, добавив это в мой .htaccess:

 php_value auto_prepend_file /usr/www/{YOUR_PATH}/display_errors.php 

display_errors.php:

 <?php ini_set('display_errors', 1); error_reporting(-1); ?> 

При этом мне не пришлось менять php.ini , использовать его для определенных подпапок и легко отключить его снова.

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

Я попробовал несколько параметров конфигурации для значения error_reporting в php.ini. От E_ALL | E_STRICT – E_ALL & E_NOTICE, и никто не работал. Я не получал никаких синтаксических ошибок, отображаемых в браузере (что довольно раздражает на сервере разработки). После изменения параметра error_reporting на «E_ALL» все это начало работать. Не уверен, что это особая проблема Ubuntu Oneric, но после перезапуска ошибок Apache, появившихся на страницах HTML, обслуживаемых сервером. Кажется, дополнительные опции путают вещи, и все сообщения об ошибках прекращаются. HTH somone else.

Я просто испытал эту же проблему, и оказалось, что моя проблема не в файлах php.ini, а просто, что я запускал сервер Apache как обычный пользователь. Как только я перезапустил «sudo /etc/init.d/apache2», мои ошибки были показаны.

Убедитесь, что php.ini, который вы изменяете, находится в папке / etc / php5 / apache2, иначе он не будет иметь никакого эффекта …

Просто хочу добавить еще одну ловушку здесь, если кто-то найдет этот вопрос с проблемой, подобной моей.

Когда вы используете Chrome (или Chromium), а PHP запускает ошибку в PHP-коде, который находится внутри атрибута HTML, Chrome удаляет весь HTML-элемент, поэтому вы не можете видеть ошибку PHP в своем браузере.

Вот пример:

 <p> <a href="<?=missingFunc()?>">test</a> </p> 

При вызове этого кода в Chrome вы получаете только HTML-документ со стартовым <p> . Остальное отсутствует. После этого <p> нет сообщения об ошибке и никакого другого кода HTML. Это не проблема PHP. Когда вы открываете эту страницу в Firefox, вы можете увидеть сообщение об ошибке (при просмотре HTML-кода). Так что это проблема Chrome.

Не знаю, есть ли где-нибудь обходной путь. Когда это произойдет с вами, вам нужно проверить страницу в Firefox или проверить журнал ошибок Apache.

У меня была та же проблема с Apache и PHP 5.5. В php.ini меня были следующие строки:

 error_reporting E_ALL & ~E_NOTICE & ~E_DEPRECATED & ~E_STRICT display_errors Off 

вместо следующего:

 error_reporting=E_ALL & ~E_NOTICE & ~E_DEPRECATED & ~E_STRICT display_errors=Off 

(знак = отсутствует)

Хотя эта ветка старая, но все же, я чувствую, что должен опубликовать хороший ответ из этого ответа stackoverflow .

 ini_set('display_errors', 1); ini_set('display_startup_errors', 1); error_reporting(E_ALL); 

Это наверняка спасло меня после нескольких часов, пытаясь заставить все работать. Я надеюсь, что это помогает кому-то.