0

两天前我遇到了一个非常烦人的问题,关于 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”。

4

2 回答 2

0

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

于 2013-08-15T15:39:42.760 回答
0

您能否通过检查 chrome 中的 http 标头来验证您的 cookie 是否存在?你确定问题不只是在你身上吗?

还要验证是否为 cookie 正确设置了域名。你在用域名等做时髦的事情吗?

于 2013-05-15T17:04:01.630 回答