PHP スクリプトのセグメンテーション エラーの解決策: 1. PHP バージョンをアップグレードします。 2. 「/etc/pki/nssdb/pkcs11.txt」ファイルと「/etc/pki/nssdb/cert9.db」ファイルを削除します。 。 できる。
推奨: 「PHP ビデオ チュートリアル 」
PHP は file_get_contents または Curl を使用して https ドメイン名をリクエストします. セグメントフォルトエラーが発生します。
問題の PHP コードは次のとおりです。この PHP コマンドを実行すると、セグメント フォールトが発生します:
var_dump(file_get_contents("https://www.baidu.com"));
解決策:
1. アップグレードしてください。 PHP バージョン 5.4 環境では、問題は再現できません (上記の実行コードは PHP5.2 です)
2. 悲しいことに、これは当てはまりません /etc/pki/nssdb/pkcs11 を削除します。ここでは、txt と / etc/pki/nssdb/cert9.db がキーのようです。:-((Centos のバグで提供された解決策は練習後には実行可能ですが、削除するとすぐに再び表示されます)
しかし、なぜセグメンテーション違反が発生するのでしょうか?
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.0Centos のバグ リストで、このバグの説明:
https://bugs.centos.org/view.php?id=7399 https://www.mankier.com/5/cert9.dbを見つけることができます。
以上がPHPスクリプトのセグメンテーションエラーの問題を解決する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。