2013-05-15 162 views
0

兩天前,我遇到了一個非常惱人的問題,關於PHP會話,因爲它似乎並不持續通過頁面,而session_start();函數啓動一個新的會話而不是恢復現有的會話。這甚至發生在重新加載上。PHP會話持久性問題

下面是我的php.ini中的session部分的外觀。

Session Support  enabled 
Registered save handlers files user 
Registered serializer handlers php php_binary wddx 

session.auto_start Off Off 
session.bug_compat_42 Off Off 
session.bug_compat_warn Off Off 
session.cache_expire 180 180 
session.cache_limiter no value no value 
session.cookie_domain no value no value 
session.cookie_httponly Off Off 
session.cookie_lifetime 0 0 
session.cookie_path//
session.cookie_secure Off Off 
session.entropy_file no value no value 
session.entropy_length 0 0 
session.gc_divisor 1000 1000 
session.gc_maxlifetime 1440 1440 
session.gc_probability 0 0 
session.hash_bits_per_character 5 5 
session.hash_function 0 0 
session.name PHPSESSID PHPSESSID 
session.referer_check no value no value 
session.save_handler files files 
session.save_path /tmp /tmp 
session.serialize_handler php php 
session.use_cookies On On 
session.use_only_cookies On On 
session.use_trans_sid 1 1 

我運行一個Ubuntu服務器,WWW的數據用戶已經寫入和/ tmp文件夾閱讀permisions。會話文件存在,但由於某種原因它選擇啓動一個新文件。

操作系統:Ubuntu的12.04 PHP版本:5.3.1 Web服務器:Apache 2.2的

感謝的提前當然任何建議或忠告,併爲您的時間!

[問題解決]

問題解決了,我不得不設置cookie域「example.com」(與自己的域名代替),並確保我讓我的重定向到「exemple.com/bla/ bla「而不是」www.exemple.com/bla/bla「。

+0

是否在瀏覽器中啓用cookies? – Ibu

+0

是的,cookies在瀏覽器上啓用。 – user2375292

+0

如果您的問題已解決,請在下面選擇正確答案。如果您解決了自己的問題,請在下面回答您的問題,然後將其選爲答案。解決問題的方法不屬於問題主體。 –

回答

0

您可以通過檢查http標題來驗證您是否存在Cookie,可能是在Chrome中?你確定問題不只是跟你在一起嗎?

另外驗證cookie的域名設置是否正確。你是否在做域名等時髦的事情?

+2

我認爲這是一個評論比回答:) – Starx

+0

Cookie確實存在,我沒有指定cookie的任何域名。我應該使用'example.com'還是'www.example.com'? – user2375292

0

這裏的問題是www被認爲是一個子域名,因此當從非www域名創建時,會話不會保留。爲了解決這個問題,我通常使用.htaccess來確保所有非www網址,例如。 http://domain.com/file.php被重定向到http://www.domain.com/file.php