【发布时间】:2012-10-29 11:58:15
【问题描述】:
我刚刚安装了 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 崩溃。
我发现:Nginx + PHP-FPM 502 Bad Gateway 这似乎是一个类似的问题,但我找不到解决方法。
* ++++ 更新 ++++ *
现在我一直在对正在播放的 1 个脚本进行一些调试。
如果您转到第 808 行 http://pastebin.com/gSnzRtXb,它将运行 curl_exec() 命令。
当它运行时,它会崩溃。如果我回显“测试”;退出;就在那条线上,它 回声是正确的,如果我在该行下方执行此操作,则 php 崩溃。
这意味着导致崩溃的是第 808 行。
所以我做了一个非常简单的脚本来做一些测试:http://pastebin.com/Rshnyhcm 它也使用 curl_exec,但运行得很好。
所以我开始从 facebook 脚本中更深入地研究该查询,看看有什么 $opts 数组包含的值来自第 806 行。
该数组的输出是:http://pastebin.com/Cq9ffd3R
问题是什么,我还是没有头绪:(
【问题讨论】:
-
在您的测试中,您只是发出 HTTP 请求,但对 FB 服务器的请求是通过 HTTPS 发出的。也许这就是问题所在,没有为 HTTPS 正确配置 cURL,防火墙阻止了传出请求等。
-
好主意!我将我的测试脚本:pastebin.com/Rshnyhcm 更改为 https 连接,确实它崩溃了。使用http它工作得很好。我使用 iptables,但允许所有传出连接。还有什么我可以检查导致此 https cURL 问题的原因吗?