2009-11-17 18 views
5

共有ホスティングWebサーバーにPHPアプリケーションをインストールしました。私は500 Internal Server Errorを取得しています。ログファイルにアクセスできないようですので、エラーページを一時的に表示してエラーの詳細を示してください。PHP内部サーバーエラーの詳細を表示するにはどうすればよいですか?

私はASP.Netでこれを行う方法を知っていますが、私はPHPに精通していません。

答えて

16

試み:ファイルの先頭に

error_reporting(E_ALL); 
ini_set('display_errors', '1'); 

+3

また、ファイルのアクセス許可を確認してください。ファイルが実行可能でない場合は、しばしば500エラーが発生します。 –

-1

「内部サーバーエラー」は、PHPエラーではありません(名前が示すとおり)。したがって、サーバーログを見なければなりません(アクセスできない)、またはPHPから何もできません。

+2

-1、サーバーの設定とソフトウェアによって異なります。PHPエラーは500として表示されることがあります。 – Dereleased

+0

実際、セキュリティ上の理由から、多くの共有ホストがphpエラーをsupressionの一部として500に変えます。 –

+0

それについては申し訳ありません。 – Franz

2

PHPからそのエラーが発生しているとは思えません。共有ホスティングでは、アプリケーションのデフォルトの.htaccess設定がエラーを引き起こしている可能性が高くなります。

私の推測では、RewriteBaseが設定されていないmod_rewriteがあります。何かが突き出かどうかを確認するためにphpinfo();内の値で

+0

これは完全に可能で、通常は '.htaccess'がデバッグ時の最初の犯人ですが、彼はApacheを使用しているとは言いませんでした。 – Dereleased

+0

@Dereleased - PHP + SharedHosting、私はちょうど数学をしました。私はそれがIISなら驚くだろう。 –

1

見...コードのどこかでそれを入れて、ジェレミー・モーガンのソリューションが動作しない場合には、PHPのバージョン情報

4

の束を表示する必要があり、作成してみてくださいset_error_handler()を使用して独自のログファイルを作成します。通常、アプリケーションの状態に関する情報($ GLOBALSなど)は十分な情報になりますが、PHPはエラーの発生場所とエラーの種類に関するあらゆる情報を渡します(少なくとも試行します)。

また、デバッグの「除算と征服」方法を試してください。ファイルの約半分から開始し、それがまだクラッシュしている場合は上に、それ以外の場合は下に展開します。コードを削除したくない場合は、コードを/* comment out */に切り捨てるか、または__halt_compiler()特別指示文を使用して、PHPがファイル内の残りのデータをすべて無視するようにします。

最後に、それを修正しようと私を怒らせたことの1つは、Byte Order Markと呼ばれるものです。 PHPはファイルの先頭にあるBOMを評価していました。その結果、ヘッダーなどを送信しようとしたときに出力が送信され、問題が発生しました。たぶんあなたの問題ではないが、持つ価値のある知識。

+1

+1はBOMに言及します。 – chelmertz

+1

BOMのもう1つ。それは私が最初に始めたときに私に戻ってフィット感を与えた! –

関連する問題