PHP$\u会话不在本地主机子域中驻留

PHP$\u会话不在本地主机子域中驻留,php,apache,session,subdomain,xampp,Php,Apache,Session,Subdomain,Xampp,可能重复: 有点复杂,但我有4个subversion存储库,我想在本地主机上并排运行以进行测试 我将php.ini设置为: session.cookie_domain = ".localhost.com" 我设置了我的主机文件: 127.0.0.1 vader.localhost.com 127.0.0.1 luke.localhost.com 当我登录时,它会正确设置cookie Name: PHPSESSID Content: b0d3h7nh5ff40sms26q04o

可能重复:

有点复杂,但我有4个subversion存储库,我想在本地主机上并排运行以进行测试

我将php.ini设置为:

session.cookie_domain = ".localhost.com"
我设置了我的主机文件:

127.0.0.1   vader.localhost.com
127.0.0.1   luke.localhost.com
当我登录时,它会正确设置cookie

   Name: PHPSESSID
Content: b0d3h7nh5ff40sms26q04oasq3
 Domain: .localhost.com
   Path: /
我在登录时设置了$\u会话变量:

$_SESSION['authorized'] = true;
重新加载页面时,标题正确无误:

Cookie  PHPSESSID=b0d3h7nh5ff40sms26q04oasq3
Host    vader.localhost.com
Referer http://vader.localhost.com/
但是$\u会话变量为空

如果我删除子域,这一切都很好

想法

编辑:

Suhosin没有安装

此外,有人要求提供会话设置的完整代码:

if (authenticate($dat['username'], $dat['password'])) {
        session_start();
        $_SESSION['authorized'] = true;
        $_SESSION['username'] = $dat['username'];
        $_SESSION['userType'] = findId('t_user', 'username', $dat['username'], 'userTypeId');
        $_SESSION['userId'] = findId('t_user', 'username', $dat['username'], 'userId');
        $_SESSION['contactId'] = findId('t_user', 'username', $dat['username'], 'userContactId');
        array_push($reply, $reply);
        $reply['authorized'] = true;
    }
从中找到这个答案,应该会有帮助:)

我不知道这个问题是否仍然存在,但我只是遇到了同样的问题 问题并在调用之前设置会话名称解决了它 会话设置cookie参数():

我在php.ini中没有做任何更改,但现在一切正常 好的

  • 您可能需要在脚本结束(或重定向)之前调用以强制保存cookie
  • 检查默认的cookie存储位置,并查看文件中的内容。这通常是linux上的
    /tmp
    目录
  • 停止在文件中存储cookie。开始将它们存储在其中,这样将使服务器从不必要的I/0请求中解脱出来

  • 您是否有可能发布更多设置/读取会话的代码?您是否执行了
    session\u start()
    ?@SOliver good point;苏霍辛可能是这里的一个因素。编辑我的帖子以添加更多代码。另外,我检查了php.ini,Suhosin没有安装。@user1178991,检查php.ini不会告诉你。您需要检查PHP二进制文件,或者使用
    创建一个文件。我尝试单独设置名称,并设置名称+参数。两者都不起作用。我检查了tmp文件。ID为的会话中没有任何内容。我删除了它,然后再试一次。会话变量未写入文件。这是您的问题-文件也未写入。设置会话变量后,是否已将调用添加到
    session\u write\u close()
    $some_name = session_name("some_name");
    session_set_cookie_params(0, '/', '.some_domain.com');
    session_start();