準・究極の選択

下記のコードなのですが「C:\Hoge.php の 1 行目でヘッダがすでに送信されています。リダイレクトできません。代わりにこの リンク をクリックしてください。 」になります。

何故 1行目「<?php」がヘッダとして送信されたと認識されるのでしょうか?

C:\Hoge.php
-------------
<?php
if ( !headers_sent( $filename, $linenum ) ) {
header( "Location: ./TOP.php" );
exit;
}
else {
echo "$filename の $linenum 行目でヘッダがすでに送信されています。\n" .
"リダイレクトできません。代わりにこの <a "."href=\"./TOP.php \">リンク</a> をクリックしてください。\n";
exit;
}
?>
-------------

環境
Windows XPにXAMPP v1.7.3を導入しています。

XAMPP v1.7.3
Apache/2.2.14 (Win32)
PHP/5.3.1
mod_apreq2-20090110/2.7.1

A 回答 (1件)

んー、俺の今の環境では、このスクリプトをコピペして実行すると、TOP.phpにリダイレクトされますね。



1.7.0ですが、XAMPPですし、OSもXPです。

実は一行目に半角スペースとか、目に見えない何かが入ってたりしませんかね~?
    • good
    • 0
この回答へのお礼

>1.7.0ですが、XAMPPですし、OSもXPです。
>実は一行目に半角スペースとか、目に見えない何かが入ってたりしませんかね~?
半角スペースや改行コードは確認できるエディタを使って分からなかったので質問したのでが、XAMPP化が大きな変更点だったのでXAMPPの設定では?と疑っていたのが大きな間違いでした。
XAMPPに問題がないとのご回答で、もう一度再確認したら文字コードをUTF-8にしたコードが原因と分かりUTF-8NにするとTOP.phpにリダイレクトされるように戻ったのでBOMがheaderと認識されたようです。

UTF-8N
「Unicodeを変形した文字コードです。 保存するとき、ファイルの先頭にBOM(バイトオーダーマーク)は付きません。」

お礼日時:2010/07/25 08:51

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!