前段日子,突然接到用户的反馈,说系统中原来的QQ登录、微博登录通通都不能用,跟踪代码进去后发现,是在 file_get_contents这个函数请求QQ登录的地方报错,在用该函数file_get_contents请求https协议的地址时,返回的是空,没有任何错误!

从网上找了很多的帖子,时间跨度也接近3个多月,此问题一致没有得到很好的解决。有说是因为没有openssl的问题,但我的是linux系统,不需要openssl.dll,同时我也尝试编译过openssl.so等方式,都不行,因为我的Php环境就已经是包含了openssl的编译的。

而且根据网上的教程,不仅没有解决掉我的问题,反而出现了新的问题,原来还能返回空的内容,按照一系列的教程后,结果报505的错误,而且nginx、php等错误日志都不能很好地发现问题,这个又接近过去了一个月。

由于一直返回505的错误信息,我也怀疑是nginx返回的错误,这样就看不到底层php返回的具体错误。一直在想如何绕过nginx直接访问php页面,看看最原始的错误呢?但nginx不能随便更改,毕竟系统还是一直在运行和用户访问提交数据的。

又过去了两周,客户一直电话催着要解决这个问题,没办法硬着头皮再上。继续研究php的时候,突然发现php也是个命令,可以直接php test.php;test.php里只有一个file_get_contents的函数,这下就可以直接快速方便地反馈原始的错误信息了。

执行命令后,控制台上就显示 segment fault的错误。继续根据这个线索进行百度或google,有朋友发现是因为sqlite的问题,具体参考该文

http://blog.csdn.net/loophome/article/details/53812887

可以通过查看系统内核日志,发现问题端倪。

通过查看内核日志和gdb记录,可以发现问题出现在libsqlite上

内核日志:
 
tail -f /var/log/messages
kernel: php[26564]: segfault at 8048 ip 00007f7a72fede9c sp 00007fffec90edf0 error 4 in libsqlite3.so.0.8.6[7f7a72fd1000+8c000]
 
gdb记录:
 
Program received signal SIGSEGV, Segmentation fault.
0x00007fffe9651e9c in sqlite3_file_control () from /usr/lib64/libsqlite3.so.0
 
最终找到问题的最关键处理手段
删除或改名两个文件即可解决,亲身经历,该方法可行!
Removing /etc/pki/nssdb/pkcs11.txt
and /etc/pki/nssdb/cert9.db
 
现在问题解决了,但我再思考为什么回出现该问题呢,因为以前该功能是正常的,唯一做的操作是我最近因为想再这个Centos 6.5上安装.net core,进行了一次update,结果现在变成了Centos 6.9。难道是因为升级了系统导致该问题的出现吗?
 

PHP使用file_get_contents或curl请求https的域名内容为空或Http 505错误的问题排查方法的更多相关文章

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

    用php curl请求https的url出现502错误,请求帮忙解决. PHP版本:5.6.7Nginx版本:1.8.0 代码如下: $ch = curl_init(); curl_setopt($c ...

  2. PHP Curl请求Https接口

    在请求http的时候只需要 file_get_contents("http://www.sojson.com/open/api/weather/json.shtml?city=$Positi ...

  3. PHP curl请求https遇到的坑

    PHP里curl对https的证书配置默认是服务器端要求验证的,如果服务器端没有配置证书验证,则无法请求https路径.如果为了简便使用不需要配置https证书的话,配置curl时将以下两项设置为fa ...

  4. PHP使用curl请求https站点的常见错误及解决方案

    使用curl请求http站点和https站点最大的不同就是https站点有证书验证这一环节,如果证书验证不通过则无法发起请求,不管是请求什么类型的站点遇到问题时先把错误码打印出来看一下,打印错误码的代 ...

  5. curl请求https资源的时候出现400

    在nginx上配置了一个新的域名, 习惯性地用curl请求看看有没有配置错误 因为是https的, 所以 $curl 'https://test.test.com/' -x 127.0.0.1:443 ...

  6. php curl请求https 返回无结果|false|errno:35

    1 SSL: certificate subject name 'WMSvc-GWAMSERVER02' does not match target host name 把curl_setopt($c ...

  7. PHP Curl 请求https 60错误解决办法

      curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0); 

  8. curl请求https请求

    function curl_https($url,$data){ $ch = curl_init (); curl_setopt ( $ch, CURLOPT_URL, $url ); curl_se ...

  9. curl 请求https内容,返回空

    $ch = curl_init(); curl_setopt($ch, CURLOPT_URL,$api); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);/ ...

随机推荐

  1. cs231n spring 2017 lecture1 Introduction to Convolutional Neural Networks for Visual Recognition 听课笔记

    1. 生物学家做实验发现脑皮层对简单的结构比如角.边有反应,而通过复杂的神经元传递,这些简单的结构最终帮助生物体有了更复杂的视觉系统.1970年David Marr提出的视觉处理流程遵循这样的原则,拿 ...

  2. CTF---Web入门第六题 因缺思汀的绕过

    因缺思汀的绕过分值:20 来源: pcat 难度:中 参与人数:6479人 Get Flag:2002人 答题人数:2197人 解题通过率:91% 访问解题链接去访问题目,可以进行答题.根据web题一 ...

  3. BZOJ 3038: 上帝造题的七分钟2【线段树区间开方问题】

    3038: 上帝造题的七分钟2 Time Limit: 3 Sec  Memory Limit: 128 MBSubmit: 1469  Solved: 631[Submit][Status][Dis ...

  4. Codeforces Round #411 (Div. 2)(A,B,C,D 四水题)

    A. Fake NP time limit per test:1 second memory limit per test:256 megabytes input:standard input out ...

  5. [51nod1614]刷题计划

    大赛将至,摆在你面前的是n道题目,第 i(1 ≤ i ≤ n) 道题目能提升 ai 点智力值,代码量为 bi KB,无聊值为 ci ,求至少提升m点智力值的情况下,所做题目代码量之和*无聊值之和最小为 ...

  6. CF 348DTurtles

    题目:http://codeforces.com/contest/348/problem/D 如果只走一条路那就直接dp就可以了. 设cal(x1,y1,x2,y2)为(x1,y1)→(x2,y2)的 ...

  7. hdu_1019Least Common Multiple(最小公倍数)

    太简单了...题目都不想贴了 //算n个数的最小公倍数 #include<cstdio> #include<cstring> #include<algorithm> ...

  8. webpack打包非模块化js

    本文主要记录了非模块化js如何使用webpack打包 模块化打包实现方式 webpack是模块打包工具,通过入口文件递归遍历其依赖图谱,绝对是打包神器. bar.js export default f ...

  9. PHP操作MySQL对表增加一列(一个字段)

    2014-03-19 16:59 1471人阅读 评论(0) 收藏 举报 分类: MySQL(12) 对于已经建立好的数据库,在一个已经有字段的表内新加字段可用以下方法: mysql_query(&q ...

  10. Oracle实战笔记(第四天)

    导读 今天的主要内容是:两个管理员用户sys&system.数据库的逻辑备份和逻辑恢复.数据字典.表空间&数据文件. 一.Oracle数据库管理员的职责(了解) 数据库管理员(dba) ...