首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Apache或PHP生成前置行提要字符

Apache或PHP生成前置行提要字符
EN

Stack Overflow用户
提问于 2013-03-22 19:20:51
回答 4查看 3.5K关注 0票数 5

我试图在PHP应用程序中生成一个XML文件:

代码语言:javascript
运行
复制
<?php
... 
header('Content-Type: application/xml');
header('Content-Disposition: attachment; filename=test.xml');
echo "<?xml version=\"1.0\"?>\r\n" . 
...

奇怪的是,当使用我的服务器(PHPVersion5.3.8/Apache2.2.17和PHPVersion5.3.10-1/Apache2.2.22)时,是一个行提要(十六进制字符插入在输出*的开头,导致无法使用的无效)。还有还有一个关于这个的在线问题,还没解决。

所以,如果我尝试echo "bug";,我会得到4个字节,而不是3:0a 62 75 67

但是,当在本地使用WAMP服务器(PHP5.4.3/Apache2.4.2)时,我得到3个字节:62 75 67

  • 这是已知的bug/特性吗?
  • 这是配置问题吗?
  • 要怪哪一个,Apache还是PHP?
  • 我必须升级服务器吗?我还是不去了吧。
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2013-04-02 11:01:01

看起来,0a问题是由我的主PHP文件所包含的PHP文件中的尾随输入字符引起的。当我从包含文件中删除它时,输出中的0a字符就消失了。

我觉得奇怪的是,我所经历的PHP版本之间对空格的不同处理,以及在测试社区的建议时我仍然得到了0a

我没有时间对此进行研究,但我对遇到类似问题的人的建议是,检查包含文件中的空格是否可以发挥作用。此外,避免如下面所建议的那样结束<?php标记。

票数 3
EN

Stack Overflow用户

发布于 2013-03-22 19:33:13

也许是编码问题。如果您正在使用带BOM的UTF8,则在文件的开头有一个额外的字符。检查您的文件的编码,并将其转换为没有BOM的UTF8,以避免这个额外的字符。

票数 3
EN

Stack Overflow用户

发布于 2016-04-06 00:58:40

我刚碰到这个。我和团队花了一个小时才找到。太神奇了。我非常喜欢PHP。

这就是导致我们的原因:

代码语言:javascript
运行
复制
<php
  $code = "blah";
?php>

<EOF>

注意文件末尾的NEWLINE

PHP,在其所有超凡的美丽,将解释这条换行线,你实际上是想发送给某人通过电线。毕竟它是HTML。因此,即使包含路径中的多个PHP文件以换行符结尾,响应中最多会有一个换行符。

请特别注意,任何包含或需要的文件,如果以换行符结尾,则从当前文件中回送或打印的任何文件都将加上换行符。

只是。太棒了。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15578271

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档