【问题标题】:Header redirect, Cannot modify header information [duplicate]标头重定向,无法修改标头信息[重复]
【发布时间】:2014-03-07 09:02:13
【问题描述】:

我意识到我的舞台服务器与我的 localhost 不匹配。
我在发送两次的标头上犯了一些错误。不幸的是,在我的本地主机上一切正常,但在舞台服务器上我收到了正确的警告:
“警告:无法修改标头信息 - 标头已由”...

这是我的 Apache 上的一些配置调整吗?

Stage 在 GoDaddy/linux (Apache/version?) 上运行,PHP 版本 5.4.19
本地主机为 Apache/2.4.6,php 5.5.3-1ubuntu2.1

编辑:
一些示例代码,希望能澄清......
在我的本地主机上,页面每次都被重定向而没有错误,输出文本“页面重定向完成!”每次刷新时都会显示。
在舞台上,报这个错误“Warning: Cannot modify header information - headers already sent by”,输出文本“Page redirect done!”根本不显示。

<?php
ini_set("display_errors", true);
error_reporting(E_ALL);

if (!isset($_SESSION)) {
    session_start();
}
?>
<html><body><h1>It works!</h1>
</body></html>
<?php
if (isset($_SESSION['redirect'])) {
    unset($_SESSION['redirect']);
    echo "Page redirect done!<br><br>";
    echo "Session redirect is now unset, please update one more time to be sure!";
} else {
    $_SESSION['redirect'] = "1";
    header("Location: index.php");
}
?>

谢谢!

【问题讨论】:

  • 我找到了原因。我只是删除了我的 php.ini 中的 output_buffering,我得到了与舞台服务器上相同的行为。这个答案中关于标题的一个很好的解释stackoverflow.com/questions/8028957/…

标签: php apache http-headers


【解决方案1】:

在代码的开头添加这个...

ini_set("display_errors", true);
error_reporting(E_ALL);

或者您只是自己手动修改位于服务器某处的 php.ini。

【讨论】:

  • 谢谢!这不是关于如何报告错误吗?我试过这个没有成功。在我的情况下,代码执行没有错误(页面被完美重定向),日志文件中没有错误,也没有错误到标准输出。我将使用代码示例更新问题。
猜你喜欢
  • 2011-08-03
  • 2012-07-21
  • 2018-05-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多