【发布时间】: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 感谢您的回复。就像我提到的那样。有效。它已经工作了多年。据我所知,唯一的变化是我们有一个新的数据库服务器。代码中没有其他任何变化。