Подтвердить что ты не робот

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

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

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

4b9b3361

Ответ 1

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

display_errors = On

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

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

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

Ответ 2

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

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

Ответ 3

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

Ответ 4

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

Ответ 5

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

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

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

Ответ 6

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

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

из этого:

error_reporting = "E_ALL"

:

error_reporting = E_ALL

Ответ 7

У меня была та же проблема, но я использовал ini_set('display_errors', '1'); внутри самого неисправного script, поэтому он никогда не срабатывает при ошибках фатального/синтаксического анализа. Наконец, я решил это, добавив это в мой .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, использовать его для определенных подпапок и легко отключить его снова.

Ответ 8

Я знаю, что эта ветка устарела, но я просто решил аналогичную проблему с моим сервером 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.

Ответ 9

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

Ответ 10

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

Ответ 11

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

Когда вы используете 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.

Ответ 12

У меня была такая же проблема с 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

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

Ответ 13

Хотя эта ветка старая, но все же, я чувствую, что должен опубликовать хороший ответ от fooobar.com/questions/11067/....

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

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

Ответ 14

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

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

StandardErrorMode

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

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

Ответ 15

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

1) Откройте файл /ect/php/7.0/apache2/php.ini/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

Ответ 16

Вопреки распространенному мнению, Lorem Ipsum - это не просто случайный текст. Она имеет корни в произведении классической латинской литературы 45-го года до нашей эры, что делает ее более 2000 лет. Ричард МакКлинток, профессор латыни в Хэмпден-Сиднейском колледже в Вирджинии, отыскал одно из самых малоизвестных латинских слов, concectetur, из отрывка из Lorem Ipsum и, пройдя по ссылкам на слова в классической литературе, обнаружил несомненный источник. Lorem Ipsum взято из разделов 1.10.32 и 1.10.33 "De Finibus Bonorum et Malorum" (Крайности добра и зла) Цицерона, написанных в 45 году до нашей эры. Эта книга представляет собой трактат по теории этики, очень популярный во времена Ренессанса. Первая строка Lorem Ipsum, "Lorem ipsum dolor sit amet..", взята из строки в разделе 1.10.32.

Стандартный кусок Lorem Ipsum, используемый с 1500-х годов, воспроизводится ниже для тех, кто заинтересован. Разделы 1.10.32 и 1.10.33 из "de Finibus Bonorum et Malorum" Цицерона также воспроизводятся в их точном оригинальном виде, сопровождаемом английскими версиями из перевода Х. Рэкхэма 1914 года.