おそらく header の書き方の問題だと思いますが、
<?php
header('Content-type: text/comma-separated-values');
header("Content-Disposition: attachment; filename=test.csv");
readfile('./test.csv');
?>
エラー内容がわからないですが、こんな感じではどうでしょうか?
こちらではうまく動作しています。
$filename = "test.csv";
$csvdata = file_get_contents($filename);
header("Content-Disposition: attachment; filename=" . $filename);
header("Content-Type: application/octet-stream; name=" . $filename);
header("Content-length: " . strlen($csvdata));
echo $csvdata;
ありがとうございます。ばっちりです。