php-fpm nginx 使用 curl 请求 https 出现 502 错误
用php curl请求https的url出现502错误,请求帮忙解决。
PHP版本:5.6.7
Nginx版本:1.8.0
代码如下:
$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);
php-fpm日志:
[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
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(14)
之前使用CentOS没有遇到过这个问题。
今天在我的mac上进行微信扫码付款开发的时候,遇到了502.
nginx的日志和php的日志都看不出来,最终Google到了这里。
我的解决办法跟楼主差不多。但是,我重新编译了curl之后,输入curl -V,发现版本不是我装的版本,也就是说系统自带了一个版本,是7.43.我装的是7.50.1.
无奈只好把7.43咔嚓掉,才能好好的运行我安装的。
重启php,发现php里面的curl版本还是7.43,不是我安装的。
最后,还是重装了一下php。问题终于解决。
MAC 安装的PHP5.6 遇到同样问题
查了N多资料,最后解决方案是管理员权限启动php-fpm
代码没错呢。。。
遇到一样的问题,整了一上午了.同问~~
重新编译PHP,禁用SQLITE模块。
看起来很荒谬,但是确实是这样。
我之前也遇到这样的奇葩问题,你的PHP编译的有问题,可能和某一个模块冲突了,重新最小编译或者换一台机器试一试
//$return = curl_exec($ch);
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
:同样的问题 微信api https 同样访问不了 MAC brew 安装php
我运行没问题
HTTPS的问题,在fastcgi_pass这个配置的后面加上 fastcgi_param HTTPS on; 应该就可以解决问题
同遇到类似502错误,但出错信息是:
[error] 16821#0: *126 recv() failed (104: Connection reset by peer) while reading response header from upstream
。原因:curl时url是自身,例如本身域名是
www.abc.com
,然后在此域名下curl的url为www.abc.com:9090/xxx
,就会502报错,但是curl其他的域名百度什么的正常。解决方法:最终将curl地址修改为
127.0.0.1:9090/xxx
,就能正常访问了。备注:但这个貌似和服务器环境也有关系,因为在另外一台服务器(但是apache)上,用本域名照样可以正常访问。
相关参考:Can I do a CURL request to the same server?
希望对搜索
curl nginx 502
等关键字的,看到这里的有所帮助。