2009年7月20日 星期一

cannot send session cache limiter-headers already sent錯誤

今天幫學校弄網頁,使用PHP 因為我本身對PHP不熟,所以也碰到不少麻煩
在我使用session_start();想要啟用session的時候出現了

...cannot send session cache limiter-headers already sent....

這樣的錯誤,後來查了一下資料
在使用session_start()的時候網頁要避免有output,包括標準HTML串流

<?php
echo 'Hi';
session_start();
?>

或是
<html>
<?php
session_start();
?>

這樣也是不行,session_start()必須保證執行他之前沒有任何output,甚至是一個空白也不行
所以只要改成下面這樣就行了

<?php //php程式碼從網頁第一行第一格開始(且沒有空格)

session_start();
echo 'Hi~' //output在session_start()之後
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">


又或者是更改php.ini,把output_buffering給打開
output_buffering預設是

output_buffering = off

可以改成

output_buffering = 4096

這樣就算大功告成了

沒有留言: