ホームページ  >  記事  >  バックエンド開発  >  PHPスクリプトのセグメンテーションエラーの問題を解決する方法

PHPスクリプトのセグメンテーションエラーの問題を解決する方法

藏色散人
藏色散人オリジナル
2020-09-12 09:17:262605ブラウズ

PHP スクリプトのセグメンテーション エラーの解決策: 1. PHP バージョンをアップグレードします。 2. 「/etc/pki/nssdb/pkcs11.txt」ファイルと「/etc/pki/nssdb/cert9.db」ファイルを削除します。 。 できる。

PHPスクリプトのセグメンテーションエラーの問題を解決する方法

推奨: 「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.0

Centos のバグ リストで、このバグの説明:

https://bugs.centos.org/view.php?id=7399
https://www.mankier.com/5/cert9.db
を見つけることができます。

以上がPHPスクリプトのセグメンテーションエラーの問題を解決する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。