Heim  >  Artikel  >  Backend-Entwicklung  >  502 - php-fpm nginx 使用 curl 请求 https 出现 502 错误

502 - php-fpm nginx 使用 curl 请求 https 出现 502 错误

WBOY
WBOYOriginal
2016-06-06 20:25:463409Durchsuche

用php curl请求https的url出现502错误,请求帮忙解决。

PHP版本:5.6.7
Nginx版本:1.8.0

代码如下:

<code>$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'https://www.baidu.com');
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_TIMEOUT, 10);
curl_exec($ch);
</code>

php-fpm日志:

<code>[28-Jun-2015 04:04:20] NOTICE: [pool www] child 21701 started
[28-Jun-2015 04:07:33] WARNING: [pool www] child 21692 exited on signal 11 (SIGSEGV) after 222.256700 seconds from start
[28-Jun-2015 04:07:33] NOTICE: [pool www] child 21735 started

</code>

回复内容:

用php curl请求https的url出现502错误,请求帮忙解决。

PHP版本:5.6.7
Nginx版本:1.8.0

代码如下:

<code>$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'https://www.baidu.com');
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_TIMEOUT, 10);
curl_exec($ch);
</code>

php-fpm日志:

<code>[28-Jun-2015 04:04:20] NOTICE: [pool www] child 21701 started
[28-Jun-2015 04:07:33] WARNING: [pool www] child 21692 exited on signal 11 (SIGSEGV) after 222.256700 seconds from start
[28-Jun-2015 04:07:33] NOTICE: [pool www] child 21735 started

</code>

代码没错呢。。。

遇到一样的问题,整了一上午了.同问~~

重新编译PHP,禁用SQLITE模块。

看起来很荒谬,但是确实是这样。

我之前也遇到这样的奇葩问题,你的PHP编译的有问题,可能和某一个模块冲突了,重新最小编译或者换一台机器试一试

//$return = curl_exec($ch);

<code>    $return = curl_exec ($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_2) AppleWebKit/600.3.18 (KHTML, like Gecko) Version/8.0.3 Safari/600.3.18");
    模拟浏览器 不报502 但是 这是为什么呢~  
    
    -------------------------------------------
    经过两三个小时 google  百度  无果;又不想重装 
    
    看了下 curl -V 既支持 ssl 又支持 https;
    
    由于本人是使用 brew 安装的php56 所以 打算重新装下curl试试;
    
    brew uninstall curl;
    brew install curl --with-openssl; 
    
    重启 我了个草的 修复了~  
    总结 curl本身不支持 openssl</code>

https的请求,CURLOPT_SSL_VERIFYPEER 设为 true
不需要加 CURLOPT_SSL_VERIFYHOST,试试看!

你的openssl是不是系统自带的?有的镜像自带的openssl和curl有兼容问题,会体现在php的https请求里,重装一下openssl试试。

Ubuntu 14.04 自己编译的NTS版PHP5.4和PHP7 RC2,带有SQLite扩展,运行楼主的代码,都没有问题.依赖的curl库为libcurl3:amd64 7.35.0-1ubuntu2.5:

<code>dpkg -S /usr/lib/x86_64-linux-gnu/libcurl.so.4.3.0</code>

同样的问题 微信api https 同样访问不了 MAC brew 安装php

我运行没问题

HTTPS的问题,在fastcgi_pass这个配置的后面加上 fastcgi_param HTTPS on; 应该就可以解决问题

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn