PHP会话持久性问题

时间:2013-05-15 17:01:30

标签: php session persist

两天前我遇到了一个非常恼人的问题,关于PHP会话,因为它们似乎不会在页面中持续存在,而session_start();函数启动新会话而不是恢复现有会话。这甚至发生在重装上。

这是我的php.ini中的会话部分的样子。

Session Support     enabled
Registered save handlers    files user
Registered serializer handlers  php php_binary wddx 

session.auto_start  Off Off
session.bug_compat_42   Off Off
session.bug_compat_warn Off Off
session.cache_expire    180 180
session.cache_limiter   no value    no value
session.cookie_domain   no value    no value
session.cookie_httponly Off Off
session.cookie_lifetime 0   0
session.cookie_path /   /
session.cookie_secure   Off Off
session.entropy_file    no value    no value
session.entropy_length  0   0
session.gc_divisor  1000    1000
session.gc_maxlifetime  1440    1440
session.gc_probability  0   0
session.hash_bits_per_character 5   5
session.hash_function   0   0
session.name    PHPSESSID   PHPSESSID
session.referer_check   no value    no value
session.save_handler    files   files
session.save_path   /tmp    /tmp
session.serialize_handler   php php
session.use_cookies On  On
session.use_only_cookies    On  On
session.use_trans_sid   1   1

我正在运行一个Ubuntu服务器,并且www-data用户已在/ tmp文件夹上写入和读取权限。会话文件存在,但出于某种原因选择启动新文件。

操作系统:Ubuntu 12.04 PHP版本:5.3.1 Web服务器:Apache 2.2

提前感谢任何建议或建议,当然,还要感谢您的时间!

[问题已解决]

问题解决了,我不得不将cookie域设置为“example.com”(替换为您自己的域名),并确保将重定向设置为“exemple.com/bla/bla”而不是“www.exemple”。 COM / BLA / BLA”。

2 个答案:

答案 0 :(得分:0)

您是否可以通过检查Chrome中的http标头验证您的cookie是否存在?你确定问题不只是和你在一起吗?

同时验证是否为cookie正确设置了域名。您是否正在使用域名等做一些时髦的事情?

答案 1 :(得分:0)

这里的问题是www被视为子域,因此当从非www url创建时,会话不会持久存在。为了解决这个问题,我通常使用.htaccess来确保所有非www网址,例如。 http://domain.com/file.php被重定向到http://www.domain.com/file.php