PHP使用file_get_contents或curl请求https的域名均会发生segment fault的错误。
问题PHP代码如下,执行该PHP命令会发生segment fault:
var_dump(file_get_contents("https://www.baidu.com"));
解决方案:
1. 升级你的PHP版本,在5.4环境下,未能重现改问题(以上执行代码是PHP5.2)
2. Sadly, this has not been the case. Removing /etc/pki/nssdb/pkcs11.txt and /etc/pki/nssdb/cert9.db seem to be the key, here. :-((Centos bugs上提供的解决方案,实践后 可行,但是删掉了不久后会重新出现)
PHP版本:
LSB Version: :core-4.0-amd64:core-4.0-noarch:graphics-4.0-amd64:graphics-4.0-noarch:printing-4.0-amd64:printing-4.0-noarch
Distributor ID: CentOS
Description: CentOS release 6.3 (Final)
Release: 6.3
Codename: Final
通过查看内核日志和gdb记录,可以发现问题出现在libsqlite上
在Centos的bug列表中,能够找到关于这个bug的说明:
https://bugs.centos.org/view.php?id=7399
https://www.mankier.com/5/cert9.db