我意识到我的舞台服务器和本地主机之间存在不匹配。
我发送了两次头部的错误。不幸的是在我的本地一切工作正常,但在阶段服务器上,我得到一个正确的警告:
“警告:不能更改头信息 - 头已经发出” ......标题重定向,无法修改标题信息
这是对我的Apache的一些配置的调整?
舞台上GoDaddy的/ Linux上运行(?阿帕奇/版),PHP版本5.4.19
本地主机就是Apache/2.4.6,PHP 5.5.3-1ubuntu2.1
编辑:
一些示例代码,希望能够澄清...
在我的本地主机上,每次重定向页面都没有错误,输出文本“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,并获得与舞台服务器上相同的行为。关于在这个答案标题非常好的解释http://stackoverflow.com/questions/8028957/how-to-fix-headers-already-sent-error-in-php/8028987#8028987 – volt