請點選以下連結, 安裝 Flash Player 9 可協助你正確瀏覽本網站
至 Adobe 網站更新 Flash Player 9
更新完成請重新整理本網頁
Blog 首頁 | 文章列表 | 留言板 | 作品展示 |    .

Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at .... )

發生原因

session_start() 之前不能有任何字元輸出,UTF-8 編碼裡的 BOM 也會被認為是 headers,有上述狀況 Session 將無法順利傳遞,並會顯示錯誤訊息。

解決方法1
1. 確定 <?php 和 session_start() 之間沒有其他字元,空格也要移除。
2. 若是 UTF-8 編碼,請用編輯器(例 UltraEdit、Notepad++...)將檔案裡的 BOM 移除。

解決方法2
以 ob_start() 開啟緩衝區將輸出資訊寫入緩衝區,可避免 headers 先於 session_start() 輸出,寫入緩衝區的內容可由 flush() 或 ob_end_flush() 輸出至瀏覽器,以下範例不會顯示錯誤訊息:
<?php
ob_start();
echo "test";
session_start();
ob_end_flush();
?>

相關連結:PHP,Output Control Functions - Manual
(感謝 YOGO 熱心提供)
2008/04/18 02:36 2008/04/18 02:36
2008/04/18 02:36 

Trackback Address :: http://blog.raienet.com/trackback/406

  1. YOGO 2008/07/17 10:13 回覆文章 | 回覆此篇 | 編輯 / 刪除

    若要確保SESSION可用,可在網頁一開頭的地方啟用PHP的緩衝輸出
    http://tw2.php.net/manual/en/function.ob-start.php
    或修改php.ini檔(找到output_buffering = 改為on)直接啟用PHP的緩衝輸出

    這樣的話啟用SESSION一定不會有問題

    • Raie 2008/07/18 16:40 編輯 | 刪除

      很好的辦法, 謝謝提供 Orz
      至於修改 php.ini, 很多人主機不是自己的
      所以盡量由程式來作修正囉

  2. YOGO 2008/07/21 15:22 回覆文章 | 回覆此篇 | 編輯 / 刪除

    補充說明一下啟用緩衝輸出除能確保session能用外,另一個好處就是能提高php的執行效率

(設密碼允許你在送出後能進行編輯)

(come) (boring) (smile) (angry) (cold) (cry) (doubt) (high) (love) (scare) (zzz) (turn) 


[◀ PREV][1]... [14][15][16][17][18][19][20][21][22]... [390][NEXT ▶]