. . . header( 'Content-Type: "text/comma-separated-values"' ); header( 'Content-Disposition: attachment; filename="list.csv"' ); header( 'Content-Transfer-Encoding: binary' ); . . . fpassthru( $tempfile ); . . .
なぜか最初の header() 関数の呼び出し時に以下の警告が発生し、うまくいきません。
Warning: Cannot modify header information - headers already sent by (output started at C:\xampp\htdocs\downloadFile.php:17) in C:\xampp\htdocs\downloadFile.php on line 29
出力した覚えはないのに...としばらく嵌っていたのですが、header() 関数を呼び出すより前にデバッグ目的で print() 関数を使って変数の値を出力していたのが原因だったようです。
print() 関数を実行すると、HTTP ヘッダが内部的に自動出力されるんですね。そこへさらに HTTP ヘッダを出力しようとしたために警告が出たというわけです。
よくよく考えれば当たり前のことなんですが、PHP にはまだ慣れていないのでこんなことでよく躓きます。