PHP子域会话消失

PHP子域会话消失,php,session,subdomain,Php,Session,Subdomain,index.php session_start(); if(!isset($_GET['n'])) { $_SESSION['foo'] = "bar"; header("Location: /index.php?n=D"); } echo "FOO: ".$_SESSION['foo']; 此页面index.php用于子域中。子域是根域中的文件夹,即 - WWW - SUB DOMAIN - index.php 会话变量foo在页面调用中设置,然后在重定向

index.php

session_start();

if(!isset($_GET['n'])) {
  $_SESSION['foo'] = "bar";
  header("Location: /index.php?n=D");
}

echo "FOO: ".$_SESSION['foo'];
此页面
index.php
用于子域中。子域是根域中的文件夹,即

 - WWW
    - SUB DOMAIN
      - index.php
会话变量
foo
在页面调用中设置,然后在重定向标题后进行检查,它就消失了

我试过:

  • ini_集('session.cookie_domain','example.com')
  • session\u set\u cookie\u params()的各种组合
  • 地点:http://subdomain.example.com
  • 扯掉我的头发
但似乎一切都不起作用。这似乎是一个非常简单的问题-有人能帮我找到丢失的cookie/会话/变量吗

编辑

var\u dump(session\u get\u cookie\u params())
yields

array(5) { ["lifetime"]=> int(0) ["path"]=> string(11) "/" ["domain"]=>
 string(23) ".example.com" ["secure"]=> bool(false) ["httponly"]=> bool(false) } 
我的URL中有一个破折号
-
(My example.com)。这可能是问题所在吗


还尝试在参数之前设置
session\u name()
。仍然没有工作。

在自己尝试了五个小时后,我终于联系了我的主机提供商,他们看了看

判决<未设置
php.ini
中的code>session.save_路径。上面的脚本现在运行正常


如果有人想详细说明原因、方法等等,我很乐意给他们答案,否则我只能接受我自己的答案。

饼干里到底有什么?会话变量cookie属于哪个域?感谢您的回复-对不起,我不明白您想说什么。cookie中应该包含的只是会话ID信息和我的变量
foo
。我已经使用
.example.com
使cookie对所有域可见,因此它应该在这个域上可见。我尝试将
路径
更改为子域,但都没有成功。啊,五个小时后才发现问题<代码>会话。未在我的服务器中设置保存路径
。我会做更多的研究并写一个答案。