Загрузите заголовки, как-то вставив 18 строк пробела

Я пытаюсь обслуживать динамически созданный файл csv. По какой-то причине, когда я получаю файл, есть 18 пустых строк, предшествующих данным. У меня нет места между заголовками, которые я определяю, и данными csv, которые я отправляю. Если я напишу данные в файл на сервере, он не получит эти пустые строки. Однако, если я напишу файл, а затем попробую подать его пользователю, пустые строки вернутся. Поэтому мне интересно, возможно, я испортил заголовки, или, возможно, есть еще одна проблема, о которой я не думаю:

function generate_csv($source_type, $include_unpublished = FALSE) { // retrieve data from DB .... // start up headers $csv_name = "$source_type-$data_set-csv_" . date('Ym-d') . '.csv'; header('Content-Type: text/x-comma-separated-values'); header('Cache-Control: must-revalidate, post-check=0, pre-check=0'); header('Cache-Control: private', false); // required for certain browser header('Content-Disposition: attachment; filename="' . $csv_name . '"'); // send csv data print $csv_data; } //end function 

Отказ от ответственности: я задал этот вопрос по адресу https://drupal.stackexchange.com/questions/27649/extra-empty-rows-when-serving-csv-file , но он, похоже, не является специфичным для drupal, и там weren ' Там много идей.