我的開發和生產環境中會話序列化不一致。跨服務器的會話序列化不一致
代碼是完全相同的,與SVN同步。 Apache和PHP的配置基本相同,只有域名不同。兩者都在運行Debian Squeeze,服務器爲64位,開發爲32位。
在服務器上,所保存的數據看起來像base64編碼的,雖然我不知道它是:
vvZKW5WEbvvRCs0-M0R8zTDAuTsKZSADKORDemOWOXqPJs0J42l7nZIewsHp8JjGFQw64Xq2x5dB_7187W4HPdJ1Yo5yK6oHvB8ofx7GL82WJCaPrzP8pR1xm02f9HenDaShvy1WTHuMuCSJ3zWGUnjRpOuJtZ49v4Dh2L5U0M4.
發展會議的數據是正常的PHP風格:
foo|s:3:"bar";baz|s:6:"wombat";promoter|O:8:"stdClass":0:{}475b17e28b25580bb92430bb286637ddlanguage|s:5:"en_us";
在服務器會話管理無法正常工作,例如轉到站點上的子域會導致會話重新初始化爲所有子域。
我正在使用Yii框架,雖然我已經通過在我的index.php文件中複製粘貼code found here,然後在框架完成任何處理之前消除了作爲問題的來源。
所以我的問題是:爲什麼會發生這種情況,以及如何讓服務器像開發環境一樣保存會話數據?
BTW,我寧願不不得不求助於一些討厭的黑客一樣:
function writeSession($id,$data)
{
$data = serialize($_SESSION);
....
}
TIA。
爲什麼不使用自定義會話處理程序?現成的許多書面材料都可以使用。事實上,因爲我沒有意識到序列化格式有任何改變,所以它看起來像你的服務器已經在使用客戶處理程序 - 所以覆蓋它或刪除它。 – symcbean
我正在使用Yii的自定義會話處理,我鏈接的代碼是測試序列化,而沒有框架阻礙。 –