PHP FPM возвращает HTTP 500 для всех ошибок PHP

я запускаю nginx с PHP-FPM. Моя конфигурация nginx для обработки файлов php выглядит следующим образом:

location  ~ .php$ {
            set $php_root /home/me/www;
            fastcgi_pass   127.0.0.1:9000;
            fastcgi_index  index.php;
            fastcgi_param  SCRIPT_FILENAME  $php_root$fastcgi_script_name;
            include /etc/nginx/fastcgi_params;
        }

Теперь у меня есть простой php-файл, как это:

<?php
     ech "asd"
     asd""
?>

Да, с очевидной ошибкой. Когда я пытаюсь получить доступ к php-файлу, вместо трассировки синтаксической ошибки я всегда получаю внутреннюю ошибку сервера HTTP 500.Я пробовал использовать error_reporting(-1); но все равно он всегда возвращает HTTP 500. Как получить PHP для печати точной ошибки вместо возврата общего HTTP 500?

5 ответов


попробуйте найти следующую строку в ваш php.ini:

 display_errors = Off

затем на


чтобы опубликовать более полный ответ, я использовал производственную версию php.ini, который имеет display_errors = Off. Вместо того, чтобы включить его глобально, что я делаю сейчас, для файлов, которые мне нужны отчеты об ошибках, я использую ini_set('display_errors', 'On'); в начале файла.


также я встретил проблему, и я поставил display_errors = Off на php.ini но это не работает. Затем я нашел php[display_errors]=off на php-fpm.conf, и он переопределит значение php.ini и это работает.


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

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

ожидаемое поведение, если журнал включен, ошибки найдены там. Если дисплей включен, на экране/выходе обнаруживаются ошибки. Если оба Омеги находятся на обеих.

текущие версии имеют ошибку, которая теряет это.


для Ubuntu 12.10, в файле php-fpm-pool-config:

php_flag[display_errors] = on

в php.ini-файл:

display_errors = On