Nginx + PHP-FPM выдают 502 плохих шлюза вместо фатальной ошибки?

11

В настоящее время я тестирую Symfony2 с Nginx и PHP-FPM. Я также использую Xdebug.

Symfony2 поставляется с демонстрационным пакетом, я хотел протестировать новую обработку фатальных ошибок, которая поставляется с Symfony 2.2.0, путем создания синтаксической ошибки в пакете Acme / Demo. Почему я так поступаю, ответ сервера - 502 неверных шлюза.

Но если я сделаю синтаксическую ошибку в файле app_dev.php (так до запуска платформы), Xdebug сообщит мне о фатальной ошибке.

И что удивительно, если я исправлю эту опечатку, а затем заново создаю синтаксическую ошибку в пакете Acme / Demo, то обработчик ошибок Symfony появится, как и ожидалось. И, наконец, если исправить все опечатки (страница работает), а затем снова создать ту же опечатку (снова в Acme / Bundle), я получу плохой шлюз.

Есть ли у вас какие-либо подсказки по этому поводу?

jchatard
источник
Любое обновление? У меня та же проблема
Кевин Робатель
Здесь также для обновлений
Заки Азиз
Какая строка появляется в вашем nginx error.log, когда вы получаете ошибку плохого шлюза? Это на 90% неправильное указание на сокет PHP-FPM. Кроме того, можете ли вы показать нам свою конфигурацию nginx и конфигурацию пула PHP-FPM, которую вы используете?
Берт

Ответы:

1

Это случилось со мной вчера. Это была ошибка при передаче с nginx на php5-fpm, выяснилось, что служба php-fpm настроена на прослушивание не того сокета.

в /etc/php5/php-fpm.conf я изменил на:

слушай = /var/run/php5-fpm.sock

и во всех / etc / nginx / убедитесь, что fastcgi_pass unix: /var/run/php5-fpm.sock

НТН

Виндзор
источник
Нет, моя конфигурация работает, так как я могу использовать приложение. Это только по этому конкретному сценарию, который я описал.
jchatard
Попробуйте изменить буферы. stackoverflow.com/questions/27173945/…
Райан
0

Вы можете отследить точную проблему, проверив логи nginx.

/var/log/nginx/sitename.error.log

502, потому что есть некоторая проблема с подключением к процессу php-fpm. Журнал может дать вам больше деталей. Если вы хотите изолировать журнал, упомяните отдельный error_log в расположении вашего php-приложения, например

    location <name> {

    error_log /var/log/nginx/site_location.error.log;
  #  error_log /var/log/nginx/site_location.error.log debug;

    }

(если nginx пытается подключиться к другому порту / phpfpm / socket, вы можете получить ответ от этого)

Анто
источник