VPS侦探论坛

 找回密码
 注册
查看: 5365|回复: 7

[Apache] curl https出现502,lnmp1.5版本,php 5.5.38的

[复制链接]
发表于 2018-7-11 12:05:09 | 显示全部楼层 |阅读模式

  1. $curl = curl_init();
  2. curl_setopt($curl, CURLOPT_URL, 'https://www.baidu.com');
  3. // 设置header
  4. curl_setopt($curl, CURLOPT_HEADER, 1);
  5. // 设置cURL 参数,要求结果保存到字符串中还是输出到屏幕上
  6. curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
  7. curl_setopt($curl,CURLOPT_SSL_VERIFYPEER,false);
  8. curl_setopt($curl,CURLOPT_SSL_VERIFYHOST,false);
  9. // 运行cURL,请求网页数据
  10. $data = curl_exec($curl);
  11. // 关闭cURL请求
  12. curl_close($curl);
  13. // 打印出抓取的测试数据
  14. var_dump($data);
复制代码


如果是http://www.baid.com就可以,https就不行了


openssl
OpenSSL support enabled
OpenSSL Library Version OpenSSL 1.0.2o  27 Mar 2018
OpenSSL Header Version OpenSSL 1.0.2o  27 Mar 2018




这是我curl信息
curl
cURL support enabled
cURL Information 7.58.0
Age 4
Features
AsynchDNS Yes
CharConv No
Debug No
GSS-Negotiate No
IDN Yes
IPv6 Yes
krb4 No
Largefile Yes
libz Yes
NTLM Yes
NTLMWB Yes
SPNEGO Yes
SSL Yes
SSPI No
TLS-SRP Yes
Protocols dict, file, ftp, ftps, gopher, http, https, imap, imaps, ldap, ldaps, pop3, pop3s, rtmp, rtsp, smb, smbs, smtp, smtps, telnet, tftp
Host x86_64-pc-linux-gnu
SSL Version OpenSSL/1.1.0g
ZLib Version 1.2.11   
美国VPS推荐: 遨游主机LinodeLOCVPS主机云搬瓦工80VPSVultr美国VPS主机中国VPS推荐: 阿里云腾讯云。LNMP付费服务(代装/问题排查)QQ 503228080
 楼主| 发表于 2018-7-11 13:24:11 | 显示全部楼层

补上日志php-fpm日志



php-fpm.log
jingmian@jingmian-TUF:/usr/local/php/var/log$ sudo cat php-fpm.log [11-Jul-2018 13:22:11] WARNING: [pool www] child 20248 exited on signal 11 (SIGSEGV - core dumped) after 5555.544988 seconds from start
[11-Jul-2018 13:22:11] NOTICE: [pool www] child 8578 started
[11-Jul-2018 13:24:15] WARNING: [pool www] child 20261 exited on signal 11 (SIGSEGV - core dumped) after 5679.081480 seconds from start
[11-Jul-2018 13:24:15] NOTICE: [pool www] child 8825 started
jingmian@jingmian-TUF:/usr/local/php/var/log$
Linux下Nginx+MySQL+PHP自动安装工具:https://lnmp.org
发表于 2018-7-11 13:45:19 | 显示全部楼层

相同环境测试没有问题

你可以开慢日志看看,php-fpm只能看到是执行了很长时间超时了
美国VPS推荐: 遨游主机LinodeLOCVPS主机云搬瓦工80VPSVultr美国VPS主机中国VPS推荐: 阿里云腾讯云。LNMP付费服务(代装/问题排查)QQ 503228080
 楼主| 发表于 2018-7-11 14:06:21 | 显示全部楼层

已经开启慢日志,可以没有被记录到,应该执行,没有超时的,我只要一运行curl https就出错了,如果http就正常




我也修改/usr/local/php/etc/php.ini 将max_execution_time=0

jingmian@jingmian-TUF:/usr/local/php/etc$ cat php-fpm.conf
[global]
pid = /usr/local/php/var/run/php-fpm.pid
error_log = /usr/local/php/var/log/php-fpm.log
log_level = notice

[www]
listen = /tmp/php-cgi.sock
listen.backlog = -1
listen.allowed_clients = 127.0.0.1
listen.owner = www
listen.group = www
listen.mode = 0666
user = www
group = www
pm = dynamic
pm.max_children = 10
pm.start_servers = 2
pm.min_spare_servers = 1
pm.max_spare_servers = 6
request_terminate_timeout = 0
request_slowlog_timeout = 2
slowlog = /usr/local/php/var/log/slow.log
jingmian@jingmian-TUF:/usr/local/php/etc$

jingmian@jingmian-TUF:/usr/local/php/var/log$ sudo cat php-fpm.log
[sudo] jingmian 的密码:
[11-Jul-2018 14:04:49] WARNING: [pool www] child 30680 exited on signal 11 (SIGSEGV - core dumped) after 90.737680 seconds from start
[11-Jul-2018 14:04:49] NOTICE: [pool www] child 31652 started
[11-Jul-2018 14:04:49] WARNING: [pool www] child 30828 exited on signal 11 (SIGSEGV - core dumped) after 89.754000 seconds from start
[11-Jul-2018 14:04:49] NOTICE: [pool www] child 31702 started
[11-Jul-2018 14:04:50] WARNING: [pool www] child 31652 exited on signal 11 (SIGSEGV - core dumped) after 0.975027 seconds from start
[11-Jul-2018 14:04:50] NOTICE: [pool www] child 31749 started
jingmian@jingmian-TUF:/usr/local/php/var/log$
Linux下Nginx+MySQL+PHP自动安装工具:https://lnmp.org
 楼主| 发表于 2018-7-11 20:52:44 | 显示全部楼层

我刚刚测试了,升级php7,curl https就可以了,同样是下面的代码
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, 'https://www.baidu.com');
// 设置header
curl_setopt($curl, CURLOPT_HEADER, 1);
// 设置cURL 参数,要求结果保存到字符串中还是输出到屏幕上
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl,CURLOPT_SSL_VERIFYPEER,false);
curl_setopt($curl,CURLOPT_SSL_VERIFYHOST,false);
// 运行cURL,请求网页数据
$data = curl_exec($curl);
// 关闭cURL请求
curl_close($curl);
// 打印出抓取的测试数据
var_dump($data);

而且我试了更新到5.6.40版本也不行,只能在php7才成功,这个问题有办法解决吗?有些代码,我这里不支持php7的

军哥运维代购:http://shop63846532.taobao.com/

发表于 2018-7-12 12:44:40 | 显示全部楼层

常见问题里有说明
5.6.40,lnmp下测试过没问题
发表于 2018-11-7 15:25:00 | 显示全部楼层

在 lnmp1.5 php5.6 下面遇到了同样的问题,四处搜了一下这个 bug 好像众说纷纭的样子。

这个 bug 在我这里只出现在 ubuntu 18.04 lts 系统下面,这个版本里如果换成 lnmp1.4 干脆通不过安装,1.5 又 curl 坏掉,很尴尬。在同一个机器下起 ubuntu 16.04 的系统则一切正常,1.5 和 1.4 都没有任何问题

看起来不是一个 php 本身的问题,因为这东西奇怪就奇怪在它不会产生任何错误跟踪信息……不管怎么操作都只会给你返回502,没有明确的日志和诊断数据,起码在 lnmp 这一套东西里是没有找到日志。而在cli下跑测试代码会直接停在 curl_exec 上面,报错信息为
“段错误 (核心已转储)”
根据这个信息去查的话,在 /var/log/kern.log 的日志里会有这么一条记录
Nov  7 15:16:43 user-virtual-machine kernel: [ 3828.249377] php[10407]: segfault at 7f2d7bad8c00 ip 00007f2d7bad8c00 sp 00007ffc12c593d8 error 15 in libssl.so.1.1[7f2d7bad5000+4000]

看起来像是 ssl 编译或者这个 openssl 的库有什么问题,或者刚好这个新系统的版本兼容性出现了些什么问题,参考网上现有的解决方案可能干掉 php 重新编译一次就会好,但是总之我换镜像了……我这边虚拟机换系统比装个包快…… :L

[ 本帖最后由 neko.cc 于 2018-11-7 15:29 编辑 ]
美国VPS推荐: 遨游主机LinodeLOCVPS主机云搬瓦工80VPSVultr美国VPS主机中国VPS推荐: 阿里云腾讯云。LNMP付费服务(代装/问题排查)QQ 503228080
发表于 2018-11-7 19:44:13 | 显示全部楼层

新系统一般只能新版安装包上做到适配,curl坏掉没具体信息没法说
ubuntu 18.04+版本采用的是最新的openssl 1.1,之前的ubuntu基本都是1.0的版本,openssl1.1安装低于php7的版本会报错,采用另外单独编译安装的openssl 1.0.2 进行安装,别的没区别
Linux下Nginx+MySQL+PHP自动安装工具:https://lnmp.org
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|VPS侦探 ( 鲁ICP备16040043号-1 )

GMT+8, 2024-11-23 11:00 , Processed in 0.028223 second(s), 16 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表