我刚刚安装了 Nginx 1.2.4 和 PHP 5.4.0(来自 svn)(php fpm)。CentOs 5.8 64
我遇到的问题是,只要运行任何社交 oAuth 脚本,PHP 就会崩溃。我尝试使用我知道在其他服务器上可以运行的各种脚本登录 Facebook、Twitter 和 Google。加载脚本时,Nginx 会显示 502 错误。我在日志中发现以下错误:
在 php-fpm 日志中:
WARNING: [pool www] child 23821 exited on signal 11 (SIGSEGV) after 1132.862984 seconds from start
在 nginx 日志中:
ERROR: recv() failed (104: Connection reset by peer) while reading response header from upstream
据我所知,当 PHP 尝试向任何 oAuth 服务器发出请求时,就会出错。
https://github.com/mahmudahsan/PHP-SDK-3.0---Graph-API-base-Facebook-Connect-Tutorial-Source例如,其中一个脚本在我的其他机器上运行正常,但会导致 PHP 崩溃。
我发现:https://stackoverflow.com/questions/3616191/nginx-php-fpm-502-bad-gateway这似乎是一个类似的问题,但我找不到解决方法。
+++更新+++
现在我已经对正在播放的其中一个脚本进行了一些调试。
如果你转到第 808 行http://pastebin.com/gSnzRtXb它运行 curl_exec() 命令。
运行该程序时,php 崩溃。如果我在该行上方 echo'test';exit;,它会正确回显;如果我在该行下方执行该操作,php 就会崩溃。
这意味着第 808 行导致了崩溃。
所以我编写了一个非常简单的脚本来做一些测试:http://pastebin.com/Rshnyhcm 它也使用 curl_exec,但运行良好。
因此我开始深入研究 Facebook 脚本中的查询,以查看第 806 行中 $opts 数组包含哪些值。
该数组的输出为:http://pastebin.com/Cq9ffd3R
问题是什么,我仍然不知道 :(
答案1
通过升级到 PHP 5.4.8 解决了