当前位置:首页> PHP教程> php基础
关键字
文章内容
关于使用session_start出现的headersalreadysent错误的解释
 
 
修改时间:[2008/08/25 19:53]    阅读次数:[825]    发表者:[起缘]
 
请看详细的错误程序和输出结果

<html>

<?

echo "testing ... ";

session_start();

?>

</html>


输出为

testing ...

Warning: Cannot send session cookie - headers already sent by (output started at F:php2000test.php:2) in F:php2000test.php on line 4


Warning: Cannot send session cache limiter - headers already sent (output started at F:php2000test.php:2) in F:php2000test.php on line 4


分析:

主要原因,php.ini里有关于session 的定义,默认是使用 cookie

[session]

session.use_cookies = 1 ; whether to use cookies


这句表明使用 cookies 存储session 而 cookies的设置必须在正式 htm 之前,也就是只能在 header 里面才行,所以造成这个错误的发生


我们修改程序为

<?

echo "testing ... ";

session_start();

?>

同样错误,因为 echo 已经输出了


我们修改程序为

<?

$i=1;

session_start();

?>

运行正确表明在session_start的前面可以有计算语句,但是不能有输出语句


我尝试过修改

session.use_cookies = 0 ; whether to use cookies

但是没有成功,希望知道答案的朋友通知我,如何去掉cookie方式的 session