2011-09-06 72 views
-1

可能重复:
Headers already sent by PHP警告:不能更改头信息

2小时后寻找答案我仍然没有固定的这个问题。

我得到警告:不能更改头信息 - 头已经发出(输出在/home/xxx/public_html/xxx1.php:6开始)在/home/xxx/public_html/xxx2.php第10行

到目前为止我做了什么?

- 在xxx1和xxx2中查找没有空格。我只是改变了网站主办,现在问题出现了。它说它是在第6行的文件xxx1。请任何一个可以解决这个问题吗?这是代码。

<?php 

require_once(__ROOT__.'/config.php'); 

?><head> 
<script src="scripts/func.js" type="text/javascript"></script> 
<link rel="stylesheet" type="text/css" href="css/yui.css"> 
<script src="scripts/yahoo-dom-event.js"></script> 
<script src="scripts/element-min.js"></script> 
<script src="scripts/container_core-min.js"></script> 
<script src="scripts/editor-min.js"></script> 
<script src="scripts/func.js" type="text/javascript"></script> 
</head> 
<? 
+0

第6行脚本“xxx1”中的内容是什么? – DaveRandom

+0

尝试在所有文件中使用短标签:。 – AVProgrammer

+0

它说错误发生在xxx2.php在第10行。输出在xxx1.php在第6行开始。所以你告诉我们输出确实开始了,这对我们没有帮助。 – animuson

回答

2

BOM - 字节顺序标记:

确保该文件并没有的config.php BOM进行编码。记事本++中的 :转到编码 - >没有BOM的UTF8。

+0

非常感谢你! – pikk

1

也许在config.php后更接近标签?>空格出现或空行 - 对于php5 < 5.3这是一个问题。也许这样

<?php 
//code here 
?> 
//this may be a space 
// or one more new line 

这就是为什么Zend的代码风格指南建议不关闭PHP的标签 示例文件xxx.php

<?php 
//not closer tag in end of file 

在这你可以使用ob_clean() - 这帮助您清理缓存和隐瞒错误 - 尝试把它放在任何一行中。

2

您之前的主机配置了输出缓冲,您的新主机没有配置。这是你解决问题的原因。

假设上面的代码是xxx1,在第6行开始输出数据,因为这是<?php ?>标签之外的东西,它被视为直接发送到浏览器的数据。然后,在后面的脚本xxx2的第10行中,有一个对header(),setcookie()或其他试图修改响应头的其他函数的调用。

在开始发送正文后,您无法修改响应标头,因为标头已经发送。

你将不得不要么:

  • 商店从上面的字符串中的HTML,并把它输出的xxx2
  • 线10之后移动调用试图更改标题的功能在第6行xxx1

没有看到更多的代码我/我们不能确切地告诉你如何做到这一点。

+0

嗯,好吧,我想我明白了,在xx2行10看起来像这样: $ hResult = mysql_query(“SELECT id,namn,access FROM r_users WHERE sessid ='$ sGUID'and namn ='$ sNICK'”)或死亡(mysql_error()); – inpbox

+0

然后你可能正在做一些导致致命错误的事情,然后尝试将HTTP响应代码更改为'500',这需要修改头文件。你有没有得到任何其他输出,或只是错误消息? – DaveRandom

相关问题