php:从不知名的空行

mkk*_*mkk 6 php debugging

我有一个奇怪的错误,不知道如何解决它而不浪费太多时间.我的控制器中有一个方法应该返回xml使用:

  header("Content-type: text/xml");
  header("Content-Disposition: attachment; filename=output.xml");
  header("Pragma: no-cache");
  header("Expires: 0");
Run Code Online (Sandbox Code Playgroud)

问题是由于空行而输出是无效的xml,我不知道它来自哪里,你知道如何解决这个问题吗?也许忽略这条空行或什么?我不想调试整个框架......我试图使用 var_dump(debug_backtrace())但是我可能因为学说而得到一个大混乱.

Bra*_*rad 17

几乎总是,<?php ?>标签之前或之后会有一个空行.如果不在您的主文件中,请查看您的包含.

另外,一点点提示...如果您的文件是纯PHP,只需启动它,<?php永远不要关闭PHP标记.关闭它是没有必要的,然后你避免在最后的空行导致你的麻烦.

  • 排除结尾的提示不是关闭php标签,除非你真的必须这样做 (3认同)

Mas*_*sih 7

使用ob_clean()它清除具有不需要的换行符的缓冲区


Kas*_*apo 5

此外,任何错误消息都将在标题之前打印到文档中。但有时在没有错误的情况下很难找到罪犯。尝试这个:

ob_start()
Run Code Online (Sandbox Code Playgroud)

将第一件事放在您的脚本中,这将确保在您调用之前不会输出任何其他内容

ob_flush()
Run Code Online (Sandbox Code Playgroud)

这对您来说可能不是必需的(ob_flush)。

另外,不久前我遇到了这个问题,其中包含在另一个脚本中间的脚本在关闭 php 标记后有一个字符,这导致该单个字符将标题向下推并使响应无效。

所以我会遵循 Brad 提出的建议,除非必须,否则不要使用关闭 php 标签。