15

プライベート WAMP PC で PHP コードを実行しているときに、サーバーから突然空の応答が返されました。実際には応答がありません。ヘッダーもデータも、PHP エラー ログにも何もありません。APACHE と PHP を再起動しましたが、まだ何もありません。他の PHP スクリプトに問題なくアクセスできるため、php が機能していることはわかっています。

Firebug はヘッダーを報告しません。バイトであり、「ロード」に163 ミリ秒しかかかりません (したがって、タイムアウトではありません)。急速なメモリ消費について考えましたが、PC のメモリを監視しましたが、スパイクは見られません。エラーと例外は今まで正常に機能していました。

世界で何?

max_execution_time = 30 ;
max_input_time = 60 ; 
max_input_nesting_level = 64 ; 
memory_limit = 500M ;

error_reporting = E_ALL | E_NOTICE | E_STRICT
display_errors = On
log_errors = On

:編集:

@私は10 フィートのポールには触れません。プログラマーが PHP を捨てるように、Ruby の連中はそれをそこに入れていると思います。

とにかく、xdebug を有効にしましたが、グラインド ファイルは出力されませんでした。次に、ゾンバットのアドバイスを受けて、ページの上部に DIE() を配置したところ、うまくいきました。PHP を完全に停止させる非常に奇妙なコードがいくつかあると思います。エラーが無効化または抑制された場合@でも、サーバーから空のコンテンツを持つヘッダーが返されるはずです!

もっと見つけたら、また投稿します。

4

12 に答える 12

12

コンソールからページを実行すると、エラーメッセージが表示されます。

// nix
php yourFile.php

// Windows
c:\path\to\php.exe yourFile.php
于 2009-12-22T05:55:53.743 に答える
6

エラー報告を変更した .htaccess ファイルをこのディレクトリに置くことができます。

テストするには、php スクリプトの先頭でこれらのオプションを明示的に設定してみてください。これが問題を引き起こしています。

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

私はまた、過度に熱心なウイルス対策パッケージが原因であるのを見てきました。一部には、インターネットと電子メールをフィルタリングするための Web プロキシ ソフトウェアが含まれています。その場合、ページは無限にロードされ続けますが、完了することはありません。

于 2009-12-22T04:26:57.837 に答える
6

@ (エラー抑制) 演算子に注意してください。@ のある行に構文エラーがある場合、PHP は黙って終了します。

この状態を検出するには、set_error_handlerを使用し、独自のエラー ハンドラーを作成します。@ が使用されているエラーに対して引き続き呼び出されます。

于 2009-12-22T05:25:17.127 に答える
1

short_open_tag = On または short_open_tag = Off の php.ini 設定を確認します

于 2009-12-22T05:02:54.060 に答える
1

何も表示されない場合に PHP コードでエラー表示を有効にするには、次のように挿入します。

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

これにより多くの時間を節約できる可能性のある例:

joomla default.php テンプレート ファイル内のこのコードは、20 行目と 21 行目がないエラー メッセージのない空白のページを表示します。

17  <?php if ($params->get('title_article_linkable')) { ?>
18      <a href="<?php 
19          $url = JRoute::_(ContentHelperRoute::getArticleRoute($item->id,$item->catid));
20          ini_set('display_errors',1);
21          error_reporting(E_ALL);
22          echo $url; ?>">
23      <?php echo $this->item->title; ?></a> // should be $item->title !!
24  <?phpLL000000 } else { ?>
25      <?php echo $item->title; ?>
26  <?php } ?>

出力:

ここに画像の説明を入力

于 2013-02-09T23:55:41.900 に答える
1

ここで最も可能性が高いのは、apache がクラッシュしていることです。apache エラー ログを確認するか、デバッガをアタッチしてください。

Windows での apache/php プロセスのデバッグの詳細については、http://bugs.php.net/bugs-generating-backtrace-win32.phpを参照してください。

于 2009-12-22T05:23:20.360 に答える
0

これが発生した場合は、通常、コードを可能な限り切り取り、ページに何かを表示できるかどうかを確認する価値があります。

コードのどこかで引用符が閉じられていないか、中括弧が閉じられていないことが原因である可能性があります。これにより、echo ステートメントがテキストとして表示されたり、別の関数で表示されたりする可能性があります。

また、すべてのエラーが報告されるべきですが、実際にはすべてのエラーが報告されていないことがわかりました。これはおそらく、共有ホストの ini 設定が私の手の届かないところにあるためです。

コメントアウトは必ずしも十分ではありません - 理由がわかりません。これが発生した場合、私は通常、ページをコピーして、エラーが見つかるまでセクションをゆっくりとカット アンド ペーストするのが最も速いと思います。

于 2009-12-22T20:15:31.167 に答える
0

イベントログを確認してください。

于 2009-12-22T04:31:02.267 に答える
-3

ファイルの終了?>タグを確認しましたか? またはもっと重要なのは、それらの後の空白...

于 2009-12-22T04:19:13.570 に答える