Klienten vet inte att det är en CSV-fil (det är trots allt bara text!).
Försök att lägga till detta INNAN någon utdata (högst upp i ditt skript):
header("Content-type: text/csv");
header("Content-Disposition: attachment; filename=file.csv");
header("Pragma: no-cache");
header("Expires: 0");
I grund och botten talar du om för klienten/webbläsaren att informationen du kommer att skicka en CSV-fil.
Det borde fungera.
Du kan hitta mer information om rubriker där:http://php.net/manual/ sv/function.header.php