PHP7+;curl(SSL/TLS)提供502坏网关
我正在开发一个网页,使用Dropbox SDK做一些事情。大多数操作都是通过CLI完成的,但有一件事必须在浏览器中完成。不过,我偶然发现了一个有趣的问题PHP7+;curl(SSL/TLS)提供502坏网关,php,ssl,curl,Php,Ssl,Curl,我正在开发一个网页,使用Dropbox SDK做一些事情。大多数操作都是通过CLI完成的,但有一件事必须在浏览器中完成。不过,我偶然发现了一个有趣的问题 $dbxClient = new dbx\Client($accountToken, 'xxx/' . VERSION); $folderMetadata = $dbxClient->getMetadataWithChildren("/"); 在CLI中运行此代码可以正常工作。但是在浏览器中运行它会给我一个502。由于感到困惑,我启动了
$dbxClient = new dbx\Client($accountToken, 'xxx/' . VERSION);
$folderMetadata = $dbxClient->getMetadataWithChildren("/");
在CLI中运行此代码可以正常工作。但是在浏览器中运行它会给我一个502。由于感到困惑,我启动了xdebug并跟踪问题出现的地方。我发现,Dropbox的curl调用导致了它,所以我编写了一个小示例脚本,看看curl是否有效它没有。
<?php
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "https://example.com");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$output = curl_exec($ch);
curl_close($ch);
echo $output;
所以。。。经过大量调查,我终于找到了解决办法。希望这能帮助未来的谷歌人 步骤1:调查正在发生的事情。
<?php
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "https://example.com");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$output = curl_exec($ch);
curl_close($ch);
echo $output;
因为我使用的是自制的php70软件包,所以OSX上的目录与Linux上的目录略有不同。我需要找到php-fpm.conf。通过检查由homebrew创建的homebrew.*.plist
-文件,我发现它位于/usr/local/etc/php/7.0/php fpm.conf
中
之后,我寻找二进制文件,幸运的是,它也记录在plist中。对我来说,它在/usr/local/opt/php70/sbin/php fpm
中
我修改了配置文件,在/var/log/php fpm.log
中编写了一个日志文件:
log_level = notice
error_log = /var/log/php-fpm.log
我给出了/var/log/php fpm.log
chmod 0777(因为我很懒),再次启动了php fpm(launchctl load-w/path/to/php fpm.plist
),并跟踪了新的日志文件:tail-f/var/log/php fpm.log
这就是我发现的(也是谷歌可能寻找的):
因此,分割错误正在发生
步骤2:修复SIGSEGV 利用新发现的信息,我用谷歌搜索出了分段错误的原因。我在前几页中找不到任何有帮助的内容,但在后面的一页中,我找到了以下链接: 它说的是:
I experienced same problem early and fixed it with running php-fpm as root.
及
这就是我所做的。我再次停止php fpm并以root用户身份手动运行它:
sudo /usr/local/opt/php70/sbin/php-fpm --fpm-config /usr/local/etc/php/7.0/php-fpm.conf
你看,这很有效!我不知道为什么会出现这种情况,但事实上,将其作为根“修复”它
我希望能有所帮助。502由什么产生?php5 fpm?nginx?或者$output中的字符串?My nginx。更新:我现在可以在iMac上测试这个例子了。同样的结果是:502。不过,它在我的三台Linux服务器上都能工作。以root用户身份运行php fpm对我来说也很有效,但我发现问题来自于
——使用imap
选项。我卸载了php,并在没有imap的情况下重新安装了它,一切正常。我不需要imap,但对于那些需要它的人来说,这是个问题。这个问题在这里报道,伙计!从早上起我就一直在努力解决这个问题--我想给你买杯啤酒!
sudo /usr/local/opt/php70/sbin/php-fpm --fpm-config /usr/local/etc/php/7.0/php-fpm.conf