3

「ヘッダー情報を変更できません」という PHP の警告が表示されることを非常に望んでいます。なんで?理にかなっているからです。本文の後にヘッダーを送信することはできません。

でも、できるのに!!exitコントローラーでいくつかの変数をデバッグし、その後すぐにデバッグしないと、スクリプトは次のページにリダイレクトするだけです。すべてが「うまくいき」、変数ダンプが表示されません。

PHP のどこで、出力をバッファしないように構成 (?) できますか? または、この奇妙な動作を可能にするものが何であれ!

明確にするために:私はPHP警告が必要であり、リダイレクトが機能することを望んでいませんheader('Location: ...')

以前の(ローカル)サーバー(両方ともW XP)では、出力/ヘッダー警告がスローされたと確信しています...

編集
説明するために、最も基本的なコードを使用します(文字通り使用していませんが、間接的には同じです):

$form->validate($_POST);
var_dump($form->errors); // !!
if ( $form->noErrors ) {
  header('Location: '.$form->redirectUrl);
  exit;
}

回答
@Heandelエラーレポートがすべてです(通知や非推奨などを含む)。ただし、問題はありません。エラー表示に関係なく、ヘッダーの送信は不可能です。

@tandu私は自分のフレームワークを使用していますが、それも問題ではありません。

@ceejayoz私のコードにはob_startが1つもありません。私はそれを使用しません。(テンプレート ngin はそれを使用しますが、テンプレートはポストバックでトリガーされません。)

@Itay Moav 私は共有ホスティングに参加していません。Windows XP SP2 で PHP 5.3.0 (WAMP) をローカルで使用しています。私の Web サーバー (VPS) では、これは起こりません: PHP の素晴らしい警告が表示されます。

更新
ありがとうガレン

php.ini から:

; Note: Output buffering can also be controlled via Output Buffering Control
;   functions.
; Possible Values:
;   On = Enabled and buffer is unlimited. (Use with caution)
;   Off = Disabled
;   Integer = Enables the buffer and sets its maximum size in bytes.
; Note: This directive is hardcoded to Off for the CLI SAPI
; Default Value: Off
; Development Value: 4096
; Production Value: 4096
; http://php.net/output-buffering
output_buffering = On

それを回すとOffうまくいきました。自動化された出力バッファリングは必要ありません。ありがとう!

4

2 に答える 2

5

php.iniファイルoutput_bufferingで、0に設定されていることを確認してください

http://us.php.net/manual/en/outcontrol.configuration.php#ini.output-buffering

于 2011-04-26T19:04:13.723 に答える
2

flush()後に置くvar_dump

于 2011-04-26T19:04:36.330 に答える