質問

1ページに、私は複数のAJAX呼び出しを行っています。すべてのコールが正常に応答を返すが、(放火魔が告げると)最後のものは(他のAjaxの呼び出しに関連していない)応答コードとして500内部サーバーエラーを返します。しかし、エラーコードにもかかわらず、正しい内容は、AJAX呼び出しから返されます。

私の驚きに、私は上のようにphp.iniではdisplay_errorsオプションを設定すると、エラーが消え、応答ページにレンダリングインチ私は、ファイルにセットアップエラーログを持っていますが、エラーは、上記の内部サーバーエラーに対応する記録されません。

(それが関連している場合)ところで、私は、APCをApacheのは、jQueryの、PHP5を使用しています。

正しい解決策はありません

他のヒント

最も可能性の高い回答は、限られた情報与え、PHPはは、それはあなたの期待出力をエコー終えた後に致命的なエラーのを到達していることである。

テストするには:最後に実行されますラインで、何かをエコー。そのエコーが表示されない場合は、お使いのPHPスクリプトがどこかで停止していることを知っています。その時点で、それはデバッグおよびトレースの問題だ。

それはあなたがライブラリまたはを他のコードのいくつかの種類を使用しています...非常に奇妙だあなたは、の独立実際の戻り値のステータスコードヘッダーに影響を与えるかもしれないことを書いていない?

私はこれと同じ問題が、隠された致命的なエラーであることが判明していました。 、エラーを見つけ、はdisplay_errorsをオンにし、エラーをスマッシュ、(生産の発展のために、オフにはdisplay_errorsを保つためにおそらく最高)はdisplay_errorsをオフにします。

PHPインタプリタは、単純にこの一つのリクエスト時にクラッシュします。私はPHPをクラッシュさせる可能性が1つの潜在的な理由を知っています:

は、GCC 4.3でいくつかのバグのため、コンパイラのこのバージョンでコンパイルされたPHPは壊れた例外の実装があります。いくつかの非自明な例では、スクリプトで例外をスローすると、セグメンテーション違反が発生し、スクリプトの実行が終了されます。論文は、数ヶ月前、PHPチームによって確認された。

を確認するには、それはあなたに何が起こるかどうか、あなたは、単にチェックすることができ、単に例外をスローした後に発生した場合、スクリプトの実行がクラッシュして、あなたは自宅にいるところ。チェックがスクリプトでさらにdie()とfutherを置くことによって行われ、見ることができ、何が起こります。もう一つの方法は、スクリプトが実行され、どのようにレポートを取得しますように、declare(ticks=1)を使用して、ファイルごとに目盛りまでdebug_backtrace()から最後のエントリを保存しダニ機能を登録することです。

私はやや同様の問題を持っていたし、問題はスクリプトが例外をスローした例外が表面と致命的なエラー「キャッチされない例外」にバブリングされますので、何のcatchブロックがなかったということでしたが起こりました。これは、標準のPHPの動作ですが、1台の特定のサーバー上で、あなたはまた、応答500内部サーバーエラーのコードの代わりに、200 OKになるだろう。例外を削除し、金型に置き換える()文は、

(我々はそれが本当に最初の場所で例外の恩恵を受けていなかったという単純なスクリプトだったのでことを行うことができます)、そのサーバー上の問題を修正しました

問題は、多くの場合、以下のジオンによって固定されています。 スクリプトの権限、権利および所有権を確認してください。 AJAX呼び出し後に返さ場合は、どこにも致命的なエラーがないかどうかを確認してください。 あなたはdidnのかどうかをチェックします; tは誤ってASCIIモードでのUnixにファイルをuplaoded

詳細情報は http://www.larshemel.com/forum/500_internal_server_error

scroll top