http リクエスト エラー ステータス コード 500 の通常の説明は、サーバーでエラーが発生し、リクエストを完了できなかったこと (つまり、サーバーの内部エラー) を意味しますが、特定の問題を詳細に分析する必要があります。
PHP プログラムの構文エラーが原因で
シナリオ 1: プロジェクトにはアラーム監視が設定されています (10 ごとにスケジュールされています)分 Web サイトの固定リンクにアクセスしてください) 1 日に 2 ~ 3 回、500 エラーを報告するメールが届くことがありましたが、再度手動でアクセスすると正常にアクセスされました... (推奨学習: PHP プログラミングの入門から熟練度まで )
これは最も一般的なエラーであり、文法エラーもすぐに再発する可能性があります。エラー メッセージが公開されている限り、問題はすぐに解決できます。
ローカル環境やテスト環境の場合、通常は次のように処理します。プログラムの入り口に出力エラー メッセージを設定するだけです:
//error_reporting设置应该报告的错误,下面表示除了 E_NOTICE,报告其他所有错误 error_reporting(E_ALL ^ E_NOTICE); //输出错误 ini_set('display_errors', 1);
ただし、オンライン環境では、ユーザーがこれを使用すると、このような露骨な印刷ミスを許すことはできません。どうすればよいでしょうか?プログラム エントリ ファイルのログ ファイルにエラー出力を設定できます。具体的なコードは次のとおりです:
error_reporting(E_ALL ^ E_NOTICE); //禁止把错误输出到页面 ini_set('display_errors', 0); //设置错误信息输出到文件 ini_set('log_errors', 1); //指定错误日志文件名 $error_dir = '/logs/err/'; $error_file = $error_dir . date('Ymd').'.log'; //目录不存在就创建 if (!is_dir($error_dir)){ mkdir($error_dir, 0777, true); } //文件不存在就创建之 if(!file_exists($error_file)){ $fp = fopen($error_file, 'w+'); if($fp){ fclose($fp); } } //设置错误输出文件 ini_set("error_log", $error_file); //程序正常执行逻辑......
先ほどのシナリオ 1 の問題は、後で同じプログラム エントリ ファイルでログに出力したときに発見されました。これは、mysql 接続が異常に切断され、プログラムが実行を継続したためです (mysql に接続するときは正常でしたが、特定のクエリ メソッドが呼び出されたときにエラーが報告されました。mysqli_real_escape_string メソッドが存在する場所にあったことを思い出してください) () を使用しました) により致命的なエラーが発生しましたが、最終的には正常に修復されました。
以上がphp が独自のメソッドを呼び出すときにエラー 500 を報告するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。