2011-03-30 73 views
1

我在magento和Symfony2之間有一些「有趣」的共享會話。它的作品真的很好在我的電腦(Mac OSX版10.6 + PHP 5.3.3),這裏是機制:PHP會話不會被讀取

  • 用戶登錄到Magento的(上foo.example.com)
  • 用戶轉到其他網站上(bar.example.com)並記錄。
  • 會話存儲爲magento var/session目錄下的文件。

會話Cookie設置爲在所有.example.com子域上共享。正如我之前所說,它在我的機器上完美地工作。

我今天在使用PHP 5.3.5-dotdeb的Ubuntu 8.0.4服務器上部署了這兩個應用程序,併爲我的生產域(.example.org)配置了會話共享機制。 會話cookie也在兩個子域之間共享。

而現在,有趣的開始:

  • 我登錄我的Magento應用上foo.example.org並得到一個會話cookie與價值「ABC」
  • 文件名sess_abc是創造magento var/session目錄。
  • 文件擁有者是www-data:www-數據和文件權限是-rw -------
  • 如果我刷新magento頁面,我仍然記錄下來。

  • 我去我的其他應用上bar.example.org

  • PHP接受會話cookie ABC,但不獲取裏面的數據。
  • 如果我做一個var_dump($ _ SESSION),我會有一個空數組
  • 最後,文件sess_abc被覆蓋,權限是相同的。
  • 如果我刷新此頁面,我的var_dump將提供一些symfony寫入會話的信息。

你們有沒有想過爲什麼PHP不會從這個會話文件中檢索數據? 我已經試過chmod go + rw會話文件,但結果是一樣的...

一個大的大大的提前!

編輯:

Suhosin已啓用。 phpinfo()函數給出了這樣的bar.example.org

 
suhosin.session.checkraddr 0 0 
suhosin.session.cryptdocroot On On 
suhosin.session.cryptkey [ protected ] [ protected ] 
suhosin.session.cryptraddr 0 0 
suhosin.session.cryptua Off Off 
suhosin.session.encrypt On On 
suhosin.session.max_id_length 128 128 
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 nocache 
session.cookie_domain .example.org no value 
session.cookie_httponly Off Off 
session.cookie_lifetime 3600 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 1 1 
session.hash_bits_per_character 5 5 
session.hash_function 0 0 
session.name frontend PHPSESSID 
session.referer_check no value no value 
session.save_handler files files 
session.save_path /www/var/session no value 
session.serialize_handler php php 
session.use_cookies On On 
session.use_only_cookies On On 
session.use_trans_sid 0 0 
+3

在你的'php.ini'中,session.cookie_domain'設置爲什麼? – drudge 2011-03-30 22:29:15

+1

黑暗中刺:你的主機上啓用了'suhosin',如果是的話,它的suhosin是什麼。會議。*'設置?(並且請提供所有正常的'session。*'設置,以節省更多猜測:) – Wrikken 2011-03-30 22:39:52

+0

我添加了一些信息... – futurecat 2011-03-30 22:48:02

回答

0

我不認識你,你知道的,但在「私人」文件夾path/to/magento/var/session Magento的存儲會話......可能是在MacOS,你可以在此改變你的PHP .ini(tured magento)或oder來覆蓋會話路徑;但在Ubuntu的你不能(/可能不)越過你的php.ini ...

你檢查過嗎?

+0

沒問題。 – futurecat 2011-03-30 22:51:04

0

問題是sushosin和配置「suhosin.session.cryptdocroot」,也許「suhosin.cookie。。cryptdocroot」你必須關閉這個值有了這個數值在與DocumnetRoot值soshosin隱窩會議

在sushosin配置(在Ubuntu suhosin.ini)設置這樣的:。

suhosin.session.cryptdocroot = off 
suhosin.cookie.cryptdocroot = off 

有關詳細信息看看here