-4

PHP スクリプトを実行すると、次のエラーが発生します。

Warning: Cannot modify header information - headers already sent by (output started at /wara/index.php:12) in /wara/index.php on line 18

メソッドを呼び出しheader()ていsetCookies()ます。

任意のsyggestion?

4

3 に答える 3

4

ファイルのエンコーディングが BOM 付きの UTF-8 であるかどうか、お気に入りのテキスト エディタで確認してください。そうである場合は、BOM なしで「UTF-8」に変換し、うまくいくかどうかを確認してください。

理由については:

BOM - ByteOrderMask は「見えない」3 文字の文字列で、スクリプトの最初に埋め込まれます。何よりもまず、BOM が書き込まれます。また、PHP タグ内にないため、クライアントにも送信されます。そのため、独自のヘッダーを送信しようとすると、「ヘッダーは既に送信されました」というエラーが発生します。

私の知る限り、PHPはBOM付きのUTF-8ファイルを処理できません。UTF8自体がエンディアンの問題をカバーしているため、実際には必要ありません。(たとえば、UTF16 とは異なります)

確信が持てず、エディターも教えてくれない場合は、ソース ファイルを 16 進エディターで自由に開いて、最初の 3 文字を確認してください。それらが ' の ASCII 表現でない場合

編集: コメント セクションで指摘されているように、BOM はEF BB BFUTF-8 の 16 進数値 (この順序で) として表されます。UTF-8 非対応のエディターの場合、これは. 詳細については、このウィキペディアの記事を参照してください。

于 2013-08-09T08:16:03.473 に答える
2

「 /wara/index.php:12 で出力が開始されました」と表示されます。/wara/index.php の 12 行目を確認してください (おそらく "echo" または print)。

マニュアルから ( http://www.php.net/manual/en/function.header.php ):

実際の出力が送信される前に、通常の HTML タグ、ファイル内の空白行、または PHP から header() を呼び出す必要があることに注意してください。include 関数、require 関数、または別のファイル アクセス関数を含むコードを読み取り、header() が呼び出される前に出力されるスペースまたは空の行があることは、非常に一般的なエラーです。単一の PHP/HTML ファイルを使用する場合にも、同じ問題が存在します。

于 2013-08-09T08:19:15.593 に答える
0

12 行目には、echo、print、または php コードの外側の html タグ表記などの出力があります。header()すでにヘッダーを送信しているため、何かを出力した後にヘッダー情報を変更することはできません。

于 2013-08-09T08:17:55.500 に答える