我一直在试图维护两个子域之间的会话变量,并发现它不可能。我结束了创建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