2010-01-12 5 views
0

私は(Windows上WAMP動作します)ローカルホスト上で自分のサイトを構築し、私は自分のサーバーにアップロードしたときに、私はいつも は、「ヘッダー情報を変更することはできません - すでに送られたヘッダ」を取得linux、cpanelで "header already sent"メッセージを無効にするにはどうすればいいですか?

は、私はそこにはならないことを理解してどんな空白行であってもよいし、通常はこれがうまくいく。しかし、今私はヘッダーが送信された後に誰かをリダイレクトする必要があります、私は私のlocalhostのように私のサーバーの動作をさせることができますか?

私はcPanelのとWHM使用しています: - WHM 11.25.0 -

cPanelの11.25.0-R42399、私は任意の助けに感謝します

VPS上のX 3.9 のCentOS 5.4 x86_64版のVirtuozzoを

答えて

0

まあ、 私はより多くの思考とより良いプログラミングでは、すべてのHTMLが書き込まれる前にすべてのリダイレクトを管理することができますね。

古いルールによって解決この問題...要するに

2

、あなたはあなたが、ヘッダ()関数を使用したいポイントに到達する前にブラウザに何かを出力するからPHPを防ぐために必要です。

これは、空白行が1つではない慎重なプログラミングのやり方、またはPHPの出力を出力バッファに格納し、準備ができたら出力することで行う必要があります。

ob_start()およびob_flush()の方法を参照してください。 ob_start()は、アプリケーションの開始時に使用します。これにより出力が無効になり、バッファに格納されます。出力を開始する準備が整ったら、ob_flush()を使用すると、PHPはその時点までに設定されたヘッダを含め、バッファの内容をブラウザに送信します。 ob_flush()を呼び出さないと、スクリプトの最後にバッファが出力(フラッシュ)されます。

WAMP開発環境で動作する理由は、出力バッファリングがphp.iniのデフォルトですでに有効になっている可能性が高いためです。多くの場合、これらのオールインワンパッケージは、最初の4kバイト程度のデフォルトバッファを可能にします。しかし、コード内のバッファを明示的に開始してフラッシュする方が一般的に優れています。

+0

ob_startはヘッダーをバッファリングせず、内容だけをバッファリングします。 –

0

@ user31279:私が知っている最も速くて汚い方法は、警告を抑制するために@を使用することです。

@header('Location: some-other-page.php'); 
関連する問題