首頁  >  文章  >  後端開發  >  如何解決php腳本段錯誤的問題

如何解決php腳本段錯誤的問題

藏色散人
藏色散人原創
2020-09-12 09:17:262603瀏覽

php腳本段錯誤的解決方法:1、升級PHP版本;2、刪除「/etc/pki/nssdb/pkcs11.txt」和「/etc/pki/nssdb/cert9.db」檔案即可。

如何解決php腳本段錯誤的問題

推薦:《PHP影片教學

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版本:

PHP 5.2.14 (cli) (built: Jul  3 2016 23:56:15)
Copyright (c) 1997-2010 The PHP Group
Zend Engine v2.2.0, Copyright (c) 1998-2010 Zend Technologies
    with eAccelerator v1.0-dev, Copyright (c) 2004-2012 eAccelerator, by eAccelerator

Linux系統資訊:

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的說明:

https://bugs.centos.org/view.php?id=7399
https://www.mankier.com/5/cert9.db

以上是如何解決php腳本段錯誤的問題的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn