Klien tidak mengetahui bahwa itu adalah file CSV (ini hanya teks!).
Coba tambahkan ini SEBELUM keluaran apa pun (di bagian atas skrip Anda):
header("Content-type: text/csv");
header("Content-Disposition: attachment; filename=file.csv");
header("Pragma: no-cache");
header("Expires: 0");
Pada dasarnya, Anda memberi tahu klien/browser bahwa data yang akan Anda kirim berupa file CSV.
Itu seharusnya berhasil.
Anda dapat menemukan informasi lebih lanjut tentang header di sana:http://php.net/manual/ en/function.header.php