При доступе к некоторым PHP-скриптам на моем веб-сайте я получаю ужасное сообщение об ошибке 500. Я хотел бы знать, что не так, чтобы исправить это, но Nginx не регистрирует никаких ошибок PHP в указанном мной файле журнала. Это мой серверный блок:
server {
listen 80;
server_name localhost;
access_log /home/whitey/sites/localhost/logs/access.log;
error_log /home/whitey/sites/localhost/logs/error.log error;
root /home/whitey/sites/localhost/htdocs;
index index.html index.php /index.php;
location / {
}
location ~ \.php$ {
fastcgi_pass unix:/tmp/phpfpm.sock;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
location ~* \.(?:ico|css|js|gif|jpe?g|png)$ {
expires max;
}
}
Обратите внимание, что некоторые сценарии PHP работают нормально, а другие - нет. Таким образом, с PHP нет глобальной проблемы, в этих сценариях есть что-то, что заставляет Nginx выдавать ошибку 500.
Как я могу разобраться в этом? Единственное в error.log
это ошибка о том, что favicon.ico не найден.
Вам необходимо добавить в конфигурацию пула php-fpm следующее:
catch_workers_output = 1
Вы должны добавить эту строку в каждый определенный пул!
У меня была аналогичная проблема.
Я пробовал развернуть phpMyAdmin с php-fpm 7.0 и nginx на CentOS7. Nginx показал мне 500.html, но ни в одном файле журнала ошибок не было. Я сделал все это
catch_workers_output = 1
и
display_errors = On
Ни в журнале nginx, ни в журнале php-fpm не было строки с ошибкой.
И когда я прокомментировал эту строку в nginx.conf, я смог увидеть на странице браузера что-то не так.
# error_page 500 502 503 504 /50x.html;
# location = /50x.html {
# }
Именно это помогло мне разобраться в проблемах.
php-fpm
бросает все в /var/log/php5-fpm.log
или похожие.
Найдите в своем nginx.conf error_log
определение. Может, nginx что-то пишет в этот журнал ошибок.
Вы также можете включить ведение журнала в файл на PHP.
Для меня это казалось проблемой с выскочкой, которая перенаправляла журналы для php-fpm в свое собственное местоположение, например:
/var/log/upstart/php5-fpm.log
В ubuntu Precise 12.04 также есть некоторые ошибки, которые могут способствовать отсутствию возможности ведения журнала: https://bugs.php.net/bug.php?id=61045 Если вы все еще используете эту версию.
Когда PHP display_errors отключен, ошибки PHP могут возвращать ошибку Nginx 500.
Вам следует взглянуть на свои журналы php-fpm, я уверен, вы найдете там ошибку. В CentOS 7:
tail -f /var/log/php-fpm/www-error.log
Вы также можете показать ошибки PHP. В вашем php.ini измените:
display_errors = Off
кому:
display_errors = On
Надеюсь, поможет.
Вот что случилось со мной:
Когда я удалил журнал ошибок, nginx заметил, что он больше не пропал. Когда я воссоздал этот файл, nginx больше не узнал бы, что он существует, поэтому не записывал в файл.
Чтобы исправить это, выполните следующие команды (я использую Ubuntu 14.04 LTS):
sudo service nginx reload
Если это не сработает, попробуйте:
sudo service nginx restart