PHP7.1环境登录面板报session_regenerate_id会话未激活错误求助
问题解决说明
报错根因
你遇到的 session_regenerate_id(): Cannot regenerate session id - session is not active 报错是PHP7.1版本新增的严格校验逻辑导致的,你使用的面板基于旧版Yii1框架开发,框架默认的登录逻辑没有兼容PHP7.1的session校验规则,你贴出的LoginForm代码本身没有问题,不需要修改。
优先尝试无需改代码的方案(适合无代码基础的用户)
- 方案1:切换PHP版本
登录你的虚拟主机控制面板,将PHP版本从7.1降到7.0或者5.6,即可直接解决该报错,这是操作最简单的方案。 - 方案2:修复session目录权限
在虚拟主机控制面板的PHP设置项中找到session.save_path对应的存储目录,将该目录的权限设置为755,确保程序有权限读写session临时文件。
若上述方案无效,可按步骤修改框架代码
你不需要理解代码逻辑,按照下面的步骤操作即可:
- 进入面板的源码目录,找到Yii框架的
/framework/web/auth/CWebUser.php文件 - 打开该文件,找到
login方法,在方法的第一行新增如下代码:
if (session_status() == PHP_SESSION_NONE) session_start();
修改后的代码结构示例:
public function login($identity,$duration=0) { // 新增的代码放在这一行 if (session_status() == PHP_SESSION_NONE) session_start(); // 下方原有的代码全部保留不要改动 ... }
- 保存修改后的文件,重新尝试登录面板即可。
内容的提问来源于stack exchange,提问作者Plast
相关产品推荐
相关产品推荐

