我想为所有子域使用一个会话
我的php.ini
session.save_path = "/var/lib/php/session"
[root@bh /]# ls -la /var/lib/php/session
total 48
drwxrwxrwx 2 root apache 4096 Jul 10 17:51 .
drwxr-xr-x 3 root root 4096 Apr 28 11:22 ..
-rw------- 1 sub1 sub1 233 Jul 10 10:30 sess_1ct61gdtjmd2u2chom3eu4h8t4
-rw------- 1 sub1 sub1 233 Jul 10 10:33 sess_4etbc6bh4lqabeve35mr01fp35
-rw------- 1 sub1 sub1 233 Jul 10 10:40 sess_9h62k8h50tkfnf391ji0mj57m4
我的测试文件/home/sub1/public_html/test1.php
<?
session_set_cookie_params(0, '/', 'www.mydomain.com');
session_start();
$_SESSION['test']='test......';
print_r($_SESSION);
?>
我的第二个测试文件/home/sub2/public_html/test2.php
<?
session_set_cookie_params(0, '/', 'www.mydomain.com');
session_start();
$_SESSION['test_two']='test......';
print_r($_SESSION);
?>
现在我浏览了两个文件,
我应该得到这个结果
array(['test']=>'test......',['test_two']=>'test......')
但是,没有任何反应!!
如果我在sub1.domain.com上,我会得到这个结果['test']=>'test......'
如果我在sub2.domain.com上,我得到这个结果['test_two'] =&gt;'test .....'
没有任何改变,它正常工作
答案 0 :(得分:2)
您当前的代码会尝试为www.example.com设置Cookie,而您甚至无法从www.example.com访问该网站!这就是它无法正常工作的原因。
您需要在整个域名中共享会话Cookie,如下所示:
session_set_cookie_params(0, '/', '.example.com');