PHP вообще не возвращает ошибок - PullRequest
3 голосов
/ 16 марта 2010

Я использую PHP и nginx и использую производственную версию php.ini. Поэтому переменная display_error установлена ​​на Off, и есть веская причина, по которой я хочу именно так. Но для определенных файлов мне нужно включить отчеты об ошибках. Я использовал ini_set для включения отчетов об ошибках. Но простой фрагмент кода вроде:

<?php
error_reporting(E_ALL);
ini_set("display_errors", 1);

echo "hi"errorrrrr
?>

не отслеживает ошибку. Он просто возвращает сообщение HTTP 500 Internal Server Error. Что я должен сделать, чтобы включить отчеты об ошибках?

Ответы [ 5 ]

1 голос
/ 16 марта 2010

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

Пример

error_reporting(E_ALL);
ini_set("display_errors", 1);
include 'some other file with a parse error.php';

Затем просто запустите скрипт-обертку. Это работает, потому что операторы, предшествующие включению, будут оценены первыми, прежде чем ваш скрипт окончательно умрет от ошибки разбора.

1 голос
/ 16 марта 2010

Конечно PHP не выполнит эти директивы, если произошла синтаксическая ошибка. Потому что этот сценарий даже не начал выполняться! Как это не удалось на этапе разбора.

Вы должны использовать другой способ установки этих директив, хотя это может быть сложно. Похоже, ваш PHP работает как CGI, а не как модуль apache, поэтому единственный способ установить директивы ini - это редактировать сам php.ini.

Чтобы быть уверенным, пожалуйста, запустите phpinfo(); и посмотрите, что он говорит о серверном API.

В любом случае, вы должны проверять apache error_log каждый раз, когда видите 500 ошибок, чтобы выяснить, что именно произошло.

1 голос
/ 16 марта 2010

Попробуйте установить настройки ini в файле .htaccess.

Настройки не вступят в силу, если вы поместите их в файл PHP, который не компилируется из-за синтаксической ошибки.

1 голос
/ 16 марта 2010

Вы должны быть в состоянии использовать log_errors для записи всех ваших ошибок в файл. Вы даже можете использовать error_log для записи ошибок в определенный файл, если это облегчит вам жизнь.

0 голосов
/ 27 февраля 2011

Ответ, который я искал, находится в комментариях к этому ответу: PHP вообще не возвращает ошибок

Причина, по которой это не работает в первое место в том, что, так как есть Синтаксические ошибки в вашем файле, PHP делает не разбирать это вообще. Таким образом, это не выполнить вызовы log_errors и имеет полагаться на настройки в php.ini.

- cmptrgeekken 16 марта 2010 г., 18: 16

...