配置php網站的時候,經常會在頁首出現Warning: session_start() [function.session-start]: Cannot send session cache limiter,也不影響頁面打開。
Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at D:\orther object\phptest\session.php:1) in D:\orther object\phptest\session.php on line 2
1. 如果用dreamwever的話並使用utf-8編碼,請在某個頁面上右鍵==>頁面屬性==>標題/編碼,就會看到一個“包括Unicode 簽名(BOM)(S)”的復選框,把它取消即可。這是因為utf-8編碼文件含有的bom原因,而php4,5都是不支持bom的。
2. 修改php.ini中的session.auto_start = 0 為 session.auto_start = 1
3. 還有一種方法直接給session_start()加上@session_start()就沒事了。
4. 該信息說明在啟用session的時候,已經有內容輸出,可在最上面加 ob_start()。
ob是output buffering的簡稱,ob用對了,能加速網頁的速度,但是盲目的加上ob函數,只會增加CPU額外的負擔。ob的基本作用。
1).防止在瀏覽器有輸出之后再使用setcookie,或者header,session_start函數造成的錯誤。
2).捕捉對一些不可獲取的函數的輸出,比如phpinfo會輸出一大堆的HTML,但是我們無法用一個變量例如$info=phpinfo();來捕捉,這時候ob就管用了。
3).對輸出的內容進行處理,例如進行gzip壓縮,例如進行簡繁轉換,例如進行一些字符串替換。
4).生成靜態文件,其實就是捕捉整頁的輸出,然后存成文件,經常在生成HTML,或者整頁緩存中使用。
5. 在PHP文件頭部直接加下屏蔽警告錯誤的代碼:
PHP代碼
<?php
//如有session_star(),放在session_star()后面
error_reporting(E_ERROR);
ini_set("display_errors","Off");
//你的php代碼
?>