「ヘッダー情報を変更できません」という 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
うまくいきました。自動化された出力バッファリングは必要ありません。ありがとう!