在 xml 文件下载时,在文件开头添加了一个新行

On xml file download, a new line is added to start of the file

我成功生成了一个 xml 文件用于 google earth。 当我打开文件时它看起来像这样。文件从第 1 行开始 Xml generated

然后我生成一个link供用户下载文件。这些文件现在从第 2 行开始。 File download from the link.

我不明白为什么会这样。 这是我用来将文件发送给用户的代码。

     $target_file =  "../files/google.xml";
      $fh = fopen($target_file, 'r');
      $file_stream = new Stream($fh);

    return $response ->withHeader('Content-Type', 'application/xml; charset=utf-8')
                  ->withHeader('Content-Type', 'application/force-download')
                ->withHeader('Content-Type', 'application/download')
                ->withHeader('Content-Description', 'File Transfer')
                ->withHeader('Content-Disposition', 'attachment; filename="' . basename($target_file) . '"')
                ->withHeader('Expires', '0')
                ->withHeader('Cache-Control', 'must-revalidate, post-check=0, pre-check=0')
                ->withHeader('Pragma', 'public')
               ->withBody($file_stream);

谁能告诉我为什么会这样?

文件中 <?php 标记之前的任何内容都会输出到浏览器。检查文件的开头是否没有任何空格 - 换行符、BOM 标记、Unicode 不间断空格,什么都没有。这同样适用于任何 include()d 或 require()d 文件。