0

我的网站出现了这个错误:

Warning: session_start() [function.session-start]: Cannot send session cache limiter - 
headers already sent (output started at /home/rentedco/public_html/try6.php:2) in 
/home/rentedco/public_html/try6.php on line 2

我创建了一个简单的 php 文件,其中只包含其他页面的开头:

<!DOCTYPE html>
<?php session_start();
echo 'fsdf';
?>

我发现如果我删除 DOCTYPE 我不会再遇到这个问题,我的问题是我不想通过删除这个标题来破坏其他东西。我可以删除它吗?我可以在 session_start 通话后 pt 它吗?

4

4 回答 4

2

是的,将 doctype 放在那里会将数据推送到 PHP 输出缓冲区,但是 session_start() 需要将 cookie 数据写入标头。doctype 是 HTML 页面的一部分,而不是标题,因此将其放在 session_start() 之后应该是安全的。

于 2013-07-02T15:44:50.937 回答
0

试试这个想法。您可以根据需要多次启动和停止 php 解释器,但 session_start() 必须在您开始向浏览器发送任何 html 之前发生。

<?php 
    session_start();
?>
<!DOCTYPE html>
<html>
<head>
....
....
</head>
<body>
<?php
    echo 'fsdf';
?>
</body>
</html>
于 2013-07-02T15:46:51.430 回答
0

必须在将任何输出发送到浏览器之前调用会话开始,将您的代码更改为

<?php session_start(); ?><!DOCTYPE html>
<?php 
    echo "fsdf";
于 2013-07-02T15:45:36.073 回答
0

session_start()应始终写在开头,否则它将与header()函数不同。

于 2013-07-02T15:44:54.367 回答