【问题标题】:Yii sessions stopped working after changing database serverYii 会话在更改数据库服务器后停止工作
【发布时间】:2016-06-20 09:05:57
【问题描述】:

我的服务器提供商从数据中心搬走了。移动时出现问题,我们专用数据库服务器的电源出现故障。他们设置了一个新的虚拟数据库作为备份计划,这样我们就可以继续前进。我放回了数据的备份。然而,在此之后,Yii 会话似乎不再起作用。只是为了说明,只有数据库受到影响。我的代码保持原样,那里没有任何改变。

当我尝试框架之外的东西时:

session_start();
$_SESSION["test"] = 100;

这仍然有效。它将存储,我可以按照您的期望使用会话变量。但是,当我使用像 Yii::app()->session["test"] = 100 这样的 Yii 代码时。我记不起数据了。

额外信息

  • Cookie 确实有效。如果他们没有工作。每次重新加载页面时我都会弹出一个窗口。对此非常肯定。
  • “cookies 中的 sessionID 每次在页面重新加载时都会更改”更正:似乎 cookie atm 中的 id 没有更改。
  • 在服务器上找不到会话文件(我相信这可能是问题所在?)
  • 会话文件位置是可写的(在PHP中测试is_writable(Yii::app()->session->savePath)返回true)
  • YiiSession 表正在更新(清除它并重新填充)
  • Main.php 配置不包含会话组件(所以一切都是默认的)
  • 我尝试设置一些会话设置,包括自动创建数据库表。我删除了表,它又自动创建了。
  • YiiSession 表包含 id 和 expire
  • 虽然到期日期看起来很短,但它仍然设置得很好
  • 从专用服务器转到临时虚拟服务器(均运行 centOs 6.6 + MySQL)。
  • 会话存储在不受更改影响的虚拟服务器上。
  • Yii::app()->getSession()->getSessionId() 返回一个 sessionId

有什么建议可能是错的吗?在数据库服务器更改后出现此问题似乎很奇怪。

注意:刚刚注意到在某些设置文件中有一个组件->会话。看来我们使用了自定义的 HttpSession。我想问题可能就在那里。将查看它(看看为什么以前的开发人员决定为此创建一个自定义类),然后使用默认选项,看看是否可以修复它。

【问题讨论】:

  • @Rishi 感谢您的回复。就像我提到的那样。有效。它已经工作了多年。据我所知,唯一的变化是我们有一个新的数据库服务器。代码中没有其他任何变化。

标签: php session yii


【解决方案1】:

似乎我们在使用自定义类。我禁用了这个,只是添加了设置

    'session' => array (
        'autoStart' => true,
    ),

这似乎暂时有效。如果我在自定义类中找到导致此问题的特定内容,将编辑此答案。事实仍然是这很奇怪。我什至不知道这个自定义类,更不用说改变它了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-05-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-04
    • 2011-09-05
    • 2015-08-13
    相关资源
    最近更新 更多