Nginx + PHP-FPM 产生 502 错误网关而不是致命错误?

Nginx + PHP-FPM 产生 502 错误网关而不是致命错误?

我目前正在使用 Nginx 和 PHP-FPM 测试 Symfony2。我还使用 Xdebug。

Symfony2 附带一个演示包,我想通过在 Acme/Demo 包中创建语法错误来测试 Symfony 2.2.0 中对致命错误的新处理。为什么我这样做,服务器响应是 502 bad gateway。

但是如果我在文件 app_dev.php 中出现语法错误(因此在框架启动之前),Xdebug 会告诉我致命错误。

令人惊讶的是,如果我修复了那个拼写错误,然后在 Acme/Demo 包中重新创建语法错误,Symfony 错误处理程序就会按预期出现。最后,如果我修复了所有拼写错误(页面正常运行),然后再次重新创建相同的拼写错误(再次在 Acme/Bundle 中),我就会得到一个错误的网关。

你对此有什么线索吗?

答案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

高血压

答案2

您可以通过检查 nginx 日志来追踪确切的问题。

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

502 是因为连接到 php-fpm 进程时出现问题。日志可以为您提供更多详细信息。如果您想隔离日志,请在 php 应用程序的位置下提及单独的 error_log,例如

    location <name> {

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

    }

(如果 nginx 尝试连接不同的端口/phpfpm/socket,您可以从此处获得答案)

相关内容