Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/241.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP7+;curl(SSL/TLS)提供502坏网关_Php_Ssl_Curl - Fatal编程技术网

PHP7+;curl(SSL/TLS)提供502坏网关

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。由于感到困惑,我启动了

我正在开发一个网页,使用Dropbox SDK做一些事情。大多数操作都是通过CLI完成的,但有一件事必须在浏览器中完成。不过,我偶然发现了一个有趣的问题

$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