У меня есть сервер 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);
Это наверняка спасло меня после нескольких часов, пытаясь заставить все работать. Я надеюсь, что это помогает кому-то.