自从我的网络主机升级到 PHP 5.3.3 一段时间以来,我一直在尝试找出一些烦人的会话问题。我已经确定,如果存在活动会话,则从子目录调用 session_start() 会终止现有会话。举个例子,我启动一个会话,用户登录到domain.com/index.php,然后用户导航到domain.com/members/,这会触发start_session()...用户的会话丢失。
我已经对此进行了挖掘,但找不到任何类似的东西。是否有 PHP 配置可以解释这种行为?
Calling session_start()
多次使用该版本的 PHP 不会导致任何问题,但是还有其他可能的原因。
一种可能的解释是客户端的浏览器没有将会话 ID 发送回服务器。您可以通过比较两个页面生成的会话 ID 来测试这一点。假设您有一个可以正确测试的受控环境,您可以使用session_id()获取会话。
也可能是用户正在访问不同的网络服务器。由于(默认情况下)PHP 将会话存储到磁盘,因此多个服务器无法共享会话信息。如果这是共享主机,则这可能不太可能是原因。但是您可以使用以下方法对此进行测试phpinfo()
。它应该为您提供足够的信息来确定它是否是同一台服务器。对于多服务器系统,我会考虑将会话存储在 memcache 或 mysql 中。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)