前の職場の人からメール。僕が書いたPHPスクリプトがうまく動かないんだけど、どうしたらいい?と。以下、エラーメッセージ。
Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at /aaa/bbb/ccc.php: 1) in /aaa/bbb/ccc.php on line 2
Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent by (output started at /aaa/bbb/ccc.php: 1) in /aaa/bbb/ccc.php on line 2
どんなソースだったか全く覚えてないけど、ソースも添付してあったので中身をチェック。先頭部分に
<?php
session_start();
?>
ってあるけどおかしくなさげ。だけど、Windowsのメモ帳とかでUTF-8のファイルを保存するとBOMが付与されて、ファイルの先頭3バイトに(EF BB BF)がつくのがたぶん原因。PHPがこのゴミを無視してくれれば何も問題ないんだけど、これを出力してしまうからね。
BOM付きUTF-8ファイルを見てみる(x86版RHEL ES 4.7上で実行。なのでリトルエンディアンです)と、
$ hexdump -x ccc.php |head -n 1
0000000 bbef 3cbf 703f 7068 730a 7365 6973 6e6f
のようになっており、確かに先頭3バイトにef bb bfが入っている。BOMなしUTF-8ファイルを見てみると、
$ hexdump -x ccc.php |head -n 1
0000000 3f3c 6870 0a70 6573 7373 6f69 5f6e 7473
となっており、BOMはついていない。ちなみにビッグエンディアンのSPARC Solaris 10上で見てみると、BOM付きUTF-8ファイルは、
$ od -x ccc.php | head -1
0000000 efbb bf3c 3f70 6870 0a73 6573 7369 6f6e
で、ちゃんとef bb bfの順に見える。
perfect design thanks <a href=" http://www.blackplanet.com/Joseffxz/ ">free porno tube</a> mqt
Excellent work, Nice Design <a href=" http://www.blackplanet.com/Skupers/ ">safeanalsex</a> =OOO
Hello good day <a href=" http://www.blackplanet.com/Eper/ ">bbw porntube</a> 8156
Good crew it's cool :) <a href=" http://www.blackplanet.com/SilviaS/ ">horoscopesex</a> vfzy
Jonny was here <a href=" http://www.blackplanet.com/Susanin/ ">like redtube</a> %]]
real beauty page <a href=" http://www.blackplanet.com/SuperPizdec/ ">lolita pre-teen girl nude pics</a> uvhyl