2012-07-25 145 views
-1

可能重複:
Headers already sent by PHPPHP會話頭已經發出已

我試圖訪問DOMPDF我的網站的SESSION保護區域內(即轉換HTML到PDF的腳本) 。

SESSION包含用戶信息,當您單擊按鈕時,頁面將刷新並以PDF格式下載該頁面。這在我的筆記本電腦上的開發服務器上正常工作。但它在線說頭已經發送。

我打印了下面的標題,並將其追溯到我的SESSION。是否這樣,只要你初始化一個SESSION標題被髮送?

array(3) { 
    [0]=> string(38) "Expires: Thu, 19 Nov 1981 08:52:00 GMT" 
    [1]=> string(77) "Cache-Control: no-store, no-cache, must-revalidate,post-check=0, pre-check=0" 
    [2]=> string(16) "Pragma: no-cache" 
} 
+1

這並不意味着會話頭已發送。這意味着輸出已經開始(即腳本已經在網頁上打印了某些內容),並且服務器必須已經發送標題,所以不能再修改它們。 **錯誤消息告訴你輸出已經開始,在那裏開始你的調試。** – JJJ 2012-07-25 15:49:19

+1

你是否在freehoster中託管你的項目?他們有時會發送一些廣告,你會得到這樣的錯誤。 – nkr 2012-07-25 15:49:35

回答

1

你必須開始會話之前你發送任何東西給用戶。 您可以使用輸出緩衝區(ob_*函數,如thisthis)來防止腳本不應該發送任何內容。

0

有許多事情可以導致此,但什麼是最有可能發生的是,你必須被打印到屏幕上一些空白不知情的情況下之前發送的報頭。

從腳本末尾刪除任何不必要的close-php標記(?>)。這應該有所幫助(並且是最佳做法)。

0

開始會話不會發送標題,但它會嘗試設置需要與標題一起發送的cookie。您可能在已經向瀏覽器輸出內容之後調用session_start()。

0

答案可能在於PHP documentation for session_start()

如果您收到類似的錯誤:

錯誤警告:在session_start()[function.session開始]:「無法發送 會話cookie - 頭已經(輸出開始發...... 「

......或者......

」 警告:在session_start(); [function.session啓動]:不能發送 會話緩存限制器 - 標頭已發送「。

... 確保session_start();簡直是在你的 腳本的最頂端,甚至在任何DOCTYPE聲明,如:

...