两天前我遇到了一个非常恼人的问题,关于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”。
答案 0 :(得分:0)
您是否可以通过检查Chrome中的http标头验证您的cookie是否存在?你确定问题不只是和你在一起吗?
同时验证是否为cookie正确设置了域名。您是否正在使用域名等做一些时髦的事情?
答案 1 :(得分:0)
这里的问题是www被视为子域,因此当从非www url创建时,会话不会持久存在。为了解决这个问题,我通常使用.htaccess来确保所有非www网址,例如。 http://domain.com/file.php
被重定向到http://www.domain.com/file.php