我目前正在使用 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,您可以从此处获得答案)