静的な HTML ページを返すようにフォールバックするように Apache を構成する方法を誰かが知っているかどうか疑問に思っていましたが、それ (Apache) は PHP が停止したと判断できるのでしょうか? これにより、開発者はエラー ページを表示し、(最悪の場合) 実行されるべき PHP ページのソース コードを表示しないという洗練されたソリューションを提供できます。
ありがとう。
静的な HTML ページを返すようにフォールバックするように Apache を構成する方法を誰かが知っているかどうか疑問に思っていましたが、それ (Apache) は PHP が停止したと判断できるのでしょうか? これにより、開発者はエラー ページを表示し、(最悪の場合) 実行されるべき PHP ページのソース コードを表示しないという洗練されたソリューションを提供できます。
ありがとう。
PHP ソース コードは、php ファイルを処理するように apache が正しく構成されていない場合にのみ表示されます。つまり、適切なハンドラーが定義されていない場合です。
エラーの場合、表示内容は php.ini で設定できます。主に display_errors 変数です。本番環境では、これを off に設定し、log_errors を on に設定する必要があります。
php が実際に停止した場合、Apache は ErrorDocument ディレクティブで定義されたページで適切な HTTP ステータス コード (通常は 500) を返します。死ぬことはなく、ループに陥った場合、私が知る限り、できることはあまりありません。
エラー コードごとに別のページを指定できます。
これは通常 500 エラーになり、Apache 500 ハンドラーを構成して静的ページを表示できると思います。
ErrorDocument 500 /500error.html
また、 apaches ドキュメント サイトでエラー ハンドラーについて読むこともできます。
本当の問題は、PHP の致命的なエラーによって Apache が 500 コードを返さないことです。E_FATAL
と以外のエラーは、E_PARSE
を使用して好きなように処理できますset_error_handler()
。
PHP と Apache を使用するには 2 つの方法があります。
1. Install PHP as an Apache module: this way the PHP execution is a thread inside the apache process. So if PHP execution fails, then Apache process fails too. there is no fallback strategy.
2. Install PHP as a CGI script handler: this way Apache will start a new PHP process for each request. If the PHP execution fails, then Apache will know that, and there might be a way to handle the error.
PHP のインストール方法に関係なく、PHP の実行が失敗した場合は、php.ini
ファイル内のエラーを処理できます。