PHP не отображает ошибки, даже если ошибки отображения = On

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

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

15 ответов


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

display_errors = On

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

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

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


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

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


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


хотя это старый пост... у меня была похожая ситуация, от которой болела голова. Наконец, я понял, что включаю подстраницы в индекс.PHP с "@ "включить"..." "@" скрывает все ошибки, даже если display_errors включена


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

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

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


Регистрация error_reporting флаг, должен быть E_ALL, но в каком-то выпуске Plesk есть кавычки ("E_ALL") вместо (E_ALL)

я решил этот вопрос удаление кавычек (") в php.ini

из этого:

error_reporting = "E_ALL"

для этого:

error_reporting = E_ALL

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

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-страницах, которые обслуживал сервер. Кажется, дополнительные опции запутывают вещи, и все отчеты об ошибках останавливаются. НТН-Сомон еще.


Я просто испытал эту же проблему, и оказалось, что моя проблема не в php.ini-файлы, но просто, что я запускал сервер apache как обычный пользователь. Как только я сделал " sudo / etc / init.D / apache2 restart", были показаны мои ошибки.


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


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

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

вот пример:

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

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

не знаю, есть ли где-нибудь обходной путь. Когда это происходит с вами, вы должны проверить страницу в 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

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


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

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

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


при запуске PHP в windows с ISS есть некоторые параметры конфигурации в ISS, которые необходимо установить, чтобы предотвратить отображение общих страниц по умолчанию.

1) дважды щелкните по FastCGISettings, нажмите на PHP, затем отредактируйте. Установите StandardErrorMode в ReturnStdErrLn500.

StandardErrorMode

2) Перейдите на сайт, дважды щелкните по страницам ошибок, нажмите на статус 500, нажмите "Изменить настройки функций", измените ответы на ошибки Ошибки, нажмите ok

изменить ответы об ошибках на подробные ошибки


я столкнулся также с проблемой. Наконец я нашел решение. Я использую UBUNTU 16.04 LTS.

1) Открыть (при /etc/php у одного может быть другая версия PHP, но apache2/php.ini будет под файлом версии), найти ERROR HANDLING AND LOGGING раздел и установите следующее значение {display_error = On, error_reporting = E_ALL}.

Примечание - под QUICK REFERENCE раздел также можно найти эти директивы значений, но не меняйте их, просто измените в разделе, который я сказал.

2) Перезапустить Apache сервер sudo systemctl restart apache2