我一直在試圖維護兩個子域之間的會話變量,並發現它不可能。我結束了創建2個最小的PHP網頁作爲測試牀,一個我稱之爲「測試1」只是設置跨子域維護會話變量
$_SESSION['test'] = "Fred";
,並具有超鏈接「測試2」,這只是嘗試呼應$ _SESSION [價值'測試']來證明它的工作,或不。我將'測試1'放在我的www域中,'測試2'放在我的子域中。我嘗試了各種來源的頭文件中的各種版本。以下是主要的3(當然它們的變體):
ini_set('session.cookie_domain',substr($_SERVER['SERVER_NAME'],strpos($_SERVER['SERVER_NAME'],"."),100));
session_start();
或
ini_set('session.cookie_domain','mydomain.com');
session_start();
或
ini_set('session.cookie_domain', PHP_INI_ALL);
session_start();
或
session_set_cookie_params(0, "/", ".mydomain.com", false);
session_start();
我發現我得到一個每種情況下的結果都一樣。會話不是通過子域進行的,頁面測試2不知道我將$ _SESSION ['test']設置爲什麼值。然而,上述方法之一應該起作用的'網絡似乎有很多確定性。任何想法可能會發生什麼,特別是因爲我使用最小的頁面來測試機制(沒有副作用,我可以看到)?順便說一下,我在共享服務器上,如果這是pertinant在這裏。
謝謝你的想法。坦率。
編輯。 我修好了。問題是由Suhosin造成的。查看本頁腳下的詳細解答。
「一個48小時的惡夢追查,4.8秒修復」 - 超級。我理解你 :) – qasanov 2012-12-26 09:40:56