我在同一个域中有2个php页面。一个在根目录中,另一个在下面是3个文件夹。 A在两个文件中也有以下代码:
[...]
session_start();
var_dump(array('id' => session_id(), 'name' => session_name(), 'content' => $_SESSION));
die();
[...]
id
相同,name
相同,content
不同......
如果我在其中任何一个中执行session_regenerate_id()
,则两个页面都会有新的会话ID,但content
仍然不同。
清理浏览器缓存并清除所有现有cookie无济于事。
我错过了什么?
答案 0 :(得分:0)
各种会话设置可能因人而异。请注意,这些可以在php配置,主机配置,per-dir配置(在apache:.htaccess中)设置,但也在代码中设置。
要确定不同之处,在您使用会话的代码中检查ini_get_all('session')
的输出可能会显示设置的差异。
根据描述的症状(会话ID对于不同的目录是相同的,但存储的内容不同),最可能的原因是save_handler
不同(另一种机制用于存储会话,例如文件与memcached)或save_path
不同(另一个位置用于存储会话)。在这种情况下,根据评论,它是save_path
。
请注意,如果2个目录中的session-id 不同,最可能的原因是cookie_path
设置不正确,如果子域名不同,请查看{{1设置。