1

出力開始後にヘッダーを送信できないことに慣れています。実際、私はそれを頼りにしています。

私が取り組んでいるアプリケーションでは、クエリの更新または挿入が成功するたびに、ページがheader('Location: ...')呼び出しで再ロードされます。これは、POSTデータを含むページを更新可能にしたくないためです。

しかし、開発中に、これらのクエリの1つにバグがある可能性があります-そして、いくつかのデバッグ情報を(でecho)出力しています。これにより、ページがリロードされなくなりますが、php 5.4にアップグレードしてから、とにかくリロードするだけです。デバッグ情報を印刷した後でないと、デバッグ情報を読み取ることができexit;ません。これは、スクリプトの後半でさらにデバッグ情報が続く可能性があるため、気に入らないものです。

これらのエコー呼び出しの1つをチェックインheaders_sent()すると、ヘッダーがまだ送信されていないと表示されます。したがって、私が(故意に)それをオンにせずにバッファリングされているように見えます。

もちろん、現在バージョン5.4を使用しているという単なる事実ではなく、php.ini設定である可能性がありますが、見つかりません。

誰かがアイデアを持っていますか?

4

2 に答える 2

1

これを解決するには、出力バッファリングを使用します。基本的にあなたがする必要があるのはob_start();あなたができるだけ早く電話することです。次に、ものを即座に送信する代わりに、PHPは出力をバッファリングします。したがって、最初に何を設定するか、本文またはヘッダーは重要ではありません。それらはバッファに設定されるので、バッファが送信されない限り、操作は問題になりません。バッファを明示的にフラッシュしない場合、スクリプトの終了時にPHPによって送信されます。PHPマニュアルの「出力バッファリング制御」の章を参照してください。

于 2012-09-14T14:27:01.793 に答える
1

jeroenは、のoutput_buffering設定をポイントすることで、私の質問に(私の元の質問へのコメントで)答えましたphp.ini。ありがとうございました!

于 2012-09-14T16:11:13.550 に答える