systemの戻りをob_start,ob_get_cleanで取得しようとしてハマるの巻

次のようなスクリプトを実行すると、

<?php
$out = '';

//exec("cd", $out);

ob_start();
system("cd");
$out = ob_get_clean();

header("Content-Type: text/html;");  // ←10行目
print phpversion() . "<br />\n";
print "hello!<br />\n";
print_r($out);

?>

次のエラーになります。

Warning: Cannot modify header information - headers already sent in hoge.php on line 10
5.2.2
hello!
C:\xampp\htdocs\hoge 

これは Windows PHP5.2.2 の話
Linux PHP5.2.0でも同様のエラーになりました。

変わりに

exec("cd", $out);

使えばエラーになりませんでした。

なんだこりゃ。
systemとob_startは相性が悪いようです。

# PHPのバグなのかな・・・