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.
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