2010-02-26 91 views
1

我一直在嘗試在我的開發服務器上覆制生產設置,但無法使會話正常工作。當session.auto_start設置爲true時,會話cookie不會被髮送

在經歷了許多令人沮喪的時間之後,我將問題追蹤到php.ini指令session.auto_start未啓動會話的事實。

AFAIK,session.auto_start = 1和腳本頂部的session_start()應該在功能上相同。

如果我使用curl調用一個空的PHP腳本來僅顯示標題,我會在session.auto_start = 1(在php信息頁面中檢查它確實設置爲true)中獲得以下內容。

[email protected]:~$ curl -I test.server.local 
HTTP/1.1 200 OK 
Date: Sat, 20 Feb 2010 05:18:05 GMT 
Server: Apache 
P3P: CP="NOI DSP COR NID PSA ADM OUR IND NAV COM" 
Content-Type: text/html 

沒有會話cookie。

我唯一的改變是禁用session.auto_start,添加一個session_start();進入腳本並重新啓動apache。

[email protected]:~$ curl -I test.server.local 
HTTP/1.1 200 OK 
Date: Sat, 20 Feb 2010 05:18:11 GMT 
Server: Apache 
Set-Cookie: PHPSESSID=c7bdfb8eca47c12d97ff3ad86081d470; path=/ 
Expires: Thu, 19 Nov 1981 08:52:00 GMT 
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0 
Pragma: no-cache 
P3P: CP="NOI DSP COR NID PSA ADM OUR IND NAV COM" 
Content-Type: text/html 

現在,它的工作。

任何人都可以幫我理解爲什麼session.auto_start沒有發送會話cookie。

+0

你在哪裏進行配置更改? – zneak 2010-02-26 00:39:03

+0

在php.ini文件中 – gacrux 2010-02-26 01:26:13

回答

0

這是由XDebug中的一個錯誤引起的(諷刺?)。我剛剛禁用了xdebug,但我確信升級可能會修復它。