我在通过会话登录代码时随机收到以下错误;警告:session_regenerate_id():会话对象销毁在...,
中失败我在Windows 8.1 Pro 64位上使用WAMP和PHP5.5.12
$session_name = 'seam_secure_session_id';
ini_set('session.use_only_cookies', 1);
$cookieParams = session_get_cookie_params();
session_set_cookie_params($cookieParams["lifetime"], $cookieParams["path"], $cookieParams["domain"], $secure, $httponly);
session_name($session_name);
session_start();
session_regenerate_id(true);// regenerated the session, delete the old one.
ob_start();

我没有收到其他会话警告或错误,并且在任何HTML之前在我的代码开头调用登录代码。我检查了php.ini和session.save_path。保存路径上的权限很好(经过身份验证的用户,SYSTEM,管理员,用户都有完全控制权),会话文件正保存在文件夹中。
我不知所措,有什么想法吗?
由于
利
答案 0 :(得分:4)
我认为您看到了警告,因为“session_regenerate_id(true)”尝试删除旧会话,但此时可能不会写入会话。 PHP将在脚本结束时写入会话文件,同时会话值仅在内存中。这也是我们使用session_write_close或在标题重定向之后退出的原因,因此此时已经编写了会话。
也许您可以在尝试删除会话之前检查会话是否可用?例如:https://github.com/yiisoft/yii/commit/45d6a7d51be2ea12a935a94511290cb9670706d9
答案 1 :(得分:1)
我遇到了相同的问题,并按照github所述更新了对文件夹的读写权限,从而解决了该问题。希望对别人有帮助。
答案 2 :(得分:0)
我告诉你什么对我有用:我读了一条错误信息:**警告:session_regenerate_id():会话对象的销毁失败... ** 我做了什么我只是转到指示文本的文件夹,然后删除存储在其中的所有键,然后我解决了问题,这使我退出了会话,但是现在我再次进入和离开就不再有错误
答案 3 :(得分:-3)
尝试在Session.php文件的第300行
之前添加“@” session.php文件的路径可以是:
C:\xampp1\htdocs\advanced\vendor\yiisoft\yii2\web\Session.php
代码是:
public function regenerateID($deleteOldSession = false)
{
if ($this->getIsActive()) {
// add @ to inhibit possible warning due to race condition
// https://github.com/yiisoft/yii2/pull/1812
if (YII_DEBUG && !headers_sent()) {
session_regenerate_id($deleteOldSession);
} else {
@session_regenerate_id($deleteOldSession);
}
}
}
添加@后的代码是:
public function regenerateID($deleteOldSession = false)
{
if ($this->getIsActive()) {
// add @ to inhibit possible warning due to race condition
// https://github.com/yiisoft/yii2/pull/1812
if (YII_DEBUG && !headers_sent()) {
@session_regenerate_id($deleteOldSession);
} else {
@session_regenerate_id($deleteOldSession);
}
}
}
答案 4 :(得分:-4)
尝试在session_regenerate_id()之前添加@,如
@session_regenerate_id(true);
我也面临同样的问题,但是当我在session_regenerate_id(true)之前添加@时,它会消失并且系统会相应地工作。
希望这有帮助。