PHP 5.3.3 - 在子目录中运行 session_start() 会终止现有 session

标签 php session

自从我的虚拟主机升级到 PHP 5.3.3 后,我一直在尝试找出一些烦人的 session 问题。我已经确定,如果存在事件 session ,则从子目录调用 session_start() 会终止现有 session 。例如,我启动了一个 session ,用户登录到 domain.com/index.php,然后用户导航到 domain.com/members/,这触发了 start_session() ...用户的 session 丢失了。

我为此四处寻找,找不到任何类似的东西。是否有一个 PHP 配置可以解释这种行为?

最佳答案

使用该版本的 PHP 多次调用 session_start() 应该不会导致任何问题,但是还有其他可能的原因。

一种可能的解释是客户端的浏览器没有将 session ID 发送回服务器。您可以通过比较两个页面生成的 session ID 来对此进行测试。假设您有一个可以对其进行正确测试的受控环境,您可以使用 session_id()获取 session 。

也可能是用户访问了不同的网络服务器。由于(默认情况下)PHP 将 session 存储到磁盘,因此多个服务器无法共享 session 信息。如果这是共享主机,则这不太可能是原因。不过,您可以使用 phpinfo() 对此进行测试。它应该给你足够的信息来确定它是否是同一台服务器。对于多服务器系统,我会考虑将 session 存储在 memcache 或 mysql 中。

关于PHP 5.3.3 - 在子目录中运行 session_start() 会终止现有 session ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8199936/

相关文章:

php - 在 PHP 中创建单例 Web 服务的最佳方法是什么?

php - 设置 WooCommerce 购物车到期

php - 我的登录连接表中出现 session 问题

asp.net - ASP.NET SessionState 中 "InProc"和 "stateServer"模式之间的差异

PHP Unset 正在重置我的 session 数组

asp.net - 我发现使用 session 对象 (.net) 是一种邪恶的做法,我是不是太苛刻了?

php - 有什么方法可以替换 iframe 吗?

php - 如何使用PHP从数据库中获取以逗号分隔的值

php - WordPress:CSS 属性被取消了?

php - 坐标搜索