更改数据库服务器后,Yii会话停止工作

时间:2016-06-20 09:05:58

标签: php session yii

我的服务器提供商已从数据中心迁移。移动时出错了,我们专用数据库服务器的电源供应失败。他们将新的虚拟数据库设置为备份计划,以便我们继续坚持下去。我放回了数据的备份。然而,在此之后,Yii会话似乎不再起作用了。只是为了指定,只有数据库受到影响。我的代码就是这样,没有任何改变。

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

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

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

额外信息

  • Cookie可以正常运行。如果他们没有工作。每次页面重新加载时我都会弹出一个弹出窗口。对此非常肯定。
  • “每次在页面重新加载时都会更改Cookie中的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

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

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

1 个答案:

答案 0 :(得分:0)

看来我们在哪里使用自定义类。我禁用了此功能,只是添加了设置

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

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