我意識到我的舞臺服務器和本地主機之間存在不匹配。
我發送了兩次頭部的錯誤。不幸的是在我的本地一切工作正常,但在階段服務器上,我得到一個正確的警告:
「警告:不能更改頭信息 - 頭已經發出」 ......標題重定向,無法修改標題信息
這是對我的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