【问题标题】:PHP error "Can not modify header information" [duplicate]PHP错误“无法修改标头信息” [重复]
【发布时间】:2023-03-14 13:46:01
【问题描述】:

我有这个错误,我已经尝试修复它很长时间了。它似乎是凭空出现的,因为它所在的页面昨天运行良好。

错误是:

警告:无法修改标头信息 - 标头已由 /var/www/dev.racommerce.com/cart 中的(输出开始于 /var/www/dev.racommerce.com/includes/header.php:97)发送.php 在第 44 行

header.php 文件第 97 行的代码是:

<?for($i = 0; $i < $count; $i++) 
{?> 
  <li><a class="dropDown" href="<?="http://" . $_SERVER['HTTP_HOST'];?>/products.php?cat=<?=$result[$i]['categoryID']?>"><?=$result[$i]['categoryName']?></a></li> 
<?}?>

cart.php 文件第 44 行的代码是:

header("location: cart.php"); 

我一直在研究其他答案(例如 How to fix "Headers already sent" error in PHP)的解决方案,但我很难理解它们或在我的代码中实现它们。

有人可以帮我解决这个问题吗?

【问题讨论】:

  • 在你发送header之前已经有输出了。标题信息应始终在任何 html 输出之前发送。
  • 在修改标题之前不能向浏览器输出任何内容。
  • @Rikesh 我自己也提到过这个问题
  • @Kevlar - 我知道很抱歉,但你不会找到比这更好的答案。它包含与此错误相关的所有内容。

标签: php html http-headers location


【解决方案1】:

您不能在标头之前添加任何内容,例如 echo 或关闭 php 标记。如果你把它放在开头,你可以修复它

ob_start();

到最后

ob_end_flush();

这会将所有内容放入缓冲区。

【讨论】:

  • 感谢您确实为我解决了问题 :) 非常感谢。唯一令人困惑的是我今天没有编辑这两个文件,但这个错误今天早上才出现。不用担心,再次感谢。我会接受的时候我会接受
  • @Kevlar 即使是一个简单的空格也算作输出。
【解决方案2】:

修改header前不能输出html

在第一行使用ob_start(),在最后一行使用ob_flush

【讨论】:

  • 感谢您的帮助,我很感激。 jcubic 刚刚把你带到了那个帖子上:)
【解决方案3】:

ob_start 不能解决您的问题。这是一件坏事。尝试在输出回显后编写您的应用程序而无需设置标题。 您将编写更好的应用程序。 享受 ;) D.

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-03
    • 2013-11-24
    • 1970-01-01
    • 2012-06-19
    • 2010-12-27
    相关资源
    最近更新 更多