![](/img/trans.png)
[英]PHP setcookie() gives “Cannot modify header information – headers already sent” warning
[英]PHP 5.4.X is capable of placing setcookie() after HTML markups without “Headers already sent” warning?
我曾經遇到過警告:無法添加標頭信息-嘗試在echo
或任何HTML標記后放置header()
session_start()
或setcookie()
時已經發送的 header()
。 但是,當我將本地服務器中的PHP升級到5.4.7 (在XAMPP 1.8.1中 )時,不再遇到此警告。 PHP 5.4.X正常嗎?
在此示例中,我嘗試將setcookie()
放在一些文本和echo
之后:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>Cookie Test</title>
</head>
<body>
<h1>Cookie Test</h1>
<?php
if (isset($_COOKIE['test'])) {
echo "<p>{$_COOKIE['test']}</p>";
} else {
echo "<p>No cookie..</p>";
setcookie('test', 'You have a cookie!', time()+300, '/');
}
?>
</body>
</html>
然后我通過localhost / that-page.php打開頁面並刷新..
Cookie測試
你有餅干!
在我的測試環境中, setcookie()
可以正常工作而不會發出任何警告。 我的設置有問題嗎? 謝謝。
使用Win7x64和XAMPP 1.8.1
可能導致此行為的唯一環境問題是打開輸出緩沖。
這可以通過多種方式完成
在php.ini中
output_buffering = On
要么
在htaccess / httpd.conf中
php_flag output_buffering On
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.