我正在开发一个使用Dropbox SDK做一些事情的网页。大多数情况是通过CLI发生的,但必须在浏览器中完成一件特别的事情。不过,我偶然发现了一个有趣的问题。PHP7 + curl(SSL/TLS)给502 502错误的网关
$dbxClient = new dbx\Client($accountToken, 'xxx/' . VERSION);
$folderMetadata = $dbxClient->getMetadataWithChildren("/");
运行此代码在CLI中工作得很好。然而,在浏览器中运行它却给了我一个502.令人困惑的是,我启动了xdebug并追踪了问题出现的位置。我发现,Dropbox的卷曲调用导致了它,所以我写了一个小示例脚本来查看卷曲是否可用。 它没有。
<?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;
在浏览器中运行此代码会立即产生502。如果我删除https://或者将其设置为http://(或者在CLI中运行它),它也可以工作。这个问题似乎在PHP7 + curl + SSL中。添加curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
不起作用。
我该怎么做才能发现,为什么发生这种情况以及我如何解决它?
系统的相关信息:
- OS X 10.11.2
- 的nginx 1.8.0,通过自制
- PHP 7.0.3安装,通过自制
- 卷曲7.43.0安装,通过自制软件安装
- OpenSSL 1.0.2f,通过自制软件安装
502生成什么? PHP5-FPM? nginx的?或$输出内的字符串? – hanshenrik
我的nginx。对我来说,它看起来像php-fpm崩溃。 –
更新:我现在可以在我的iMac上测试该示例。同样的结果在那里:502.但它在我所有的三台Linux服务器上都能正常工作。 –