Я запускаю 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?
Попробуйте найти следующую строку в 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