PHP請求https域名發生segment fault段錯誤
阿新 • • 發佈:2019-01-07
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上
核心日誌: 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在Centos的bug列表中,能夠找到關於這個bug的說明: