共有ホスティングWebサーバーにPHPアプリケーションをインストールしました。私は500 Internal Server Error
を取得しています。ログファイルにアクセスできないようですので、エラーページを一時的に表示してエラーの詳細を示してください。PHP内部サーバーエラーの詳細を表示するにはどうすればよいですか?
私はASP.Netでこれを行う方法を知っていますが、私はPHPに精通していません。
共有ホスティングWebサーバーにPHPアプリケーションをインストールしました。私は500 Internal Server Error
を取得しています。ログファイルにアクセスできないようですので、エラーページを一時的に表示してエラーの詳細を示してください。PHP内部サーバーエラーの詳細を表示するにはどうすればよいですか?
私はASP.Netでこれを行う方法を知っていますが、私はPHPに精通していません。
試み:ファイルの先頭に
error_reporting(E_ALL);
ini_set('display_errors', '1');
。
「内部サーバーエラー」は、PHPエラーではありません(名前が示すとおり)。したがって、サーバーログを見なければなりません(アクセスできない)、またはPHPから何もできません。
-1、サーバーの設定とソフトウェアによって異なります。PHPエラーは500として表示されることがあります。 – Dereleased
実際、セキュリティ上の理由から、多くの共有ホストがphpエラーをsupressionの一部として500に変えます。 –
それについては申し訳ありません。 – Franz
PHPからそのエラーが発生しているとは思えません。共有ホスティングでは、アプリケーションのデフォルトの.htaccess設定がエラーを引き起こしている可能性が高くなります。
私の推測では、RewriteBase
が設定されていないmod_rewriteがあります。何かが突き出かどうかを確認するためにphpinfo();
内の値で
これは完全に可能で、通常は '.htaccess'がデバッグ時の最初の犯人ですが、彼はApacheを使用しているとは言いませんでした。 – Dereleased
@Dereleased - PHP + SharedHosting、私はちょうど数学をしました。私はそれがIISなら驚くだろう。 –
見...コードのどこかでそれを入れて、ジェレミー・モーガンのソリューションが動作しない場合には、PHPのバージョン情報
の束を表示する必要があり、作成してみてくださいset_error_handler()
を使用して独自のログファイルを作成します。通常、アプリケーションの状態に関する情報($ GLOBALSなど)は十分な情報になりますが、PHPはエラーの発生場所とエラーの種類に関するあらゆる情報を渡します(少なくとも試行します)。
また、デバッグの「除算と征服」方法を試してください。ファイルの約半分から開始し、それがまだクラッシュしている場合は上に、それ以外の場合は下に展開します。コードを削除したくない場合は、コードを/* comment out */
に切り捨てるか、または__halt_compiler()
特別指示文を使用して、PHPがファイル内の残りのデータをすべて無視するようにします。
最後に、それを修正しようと私を怒らせたことの1つは、Byte Order Markと呼ばれるものです。 PHPはファイルの先頭にあるBOMを評価していました。その結果、ヘッダーなどを送信しようとしたときに出力が送信され、問題が発生しました。たぶんあなたの問題ではないが、持つ価値のある知識。
+1はBOMに言及します。 – chelmertz
BOMのもう1つ。それは私が最初に始めたときに私に戻ってフィット感を与えた! –
また、ファイルのアクセス許可を確認してください。ファイルが実行可能でない場合は、しばしば500エラーが発生します。 –