[英]session_regenerate_id(): Session object destruction failed, when running site via security scanners?
[英]Warning: session_regenerate_id(): Session object destruction failed in
通過會話登錄代碼時,我隨機收到以下錯誤; 警告: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。 保存路徑上的權限很好(經過身份驗證的用戶、系統、管理員、用戶都有完全控制權),會話文件被保存在文件夾中。
我不知所措,有什么想法嗎?
謝謝
李
我認為您看到警告是因為“session_regenerate_id(true)”嘗試刪除舊會話,但此時可能未寫入會話。 PHP 將在腳本末尾寫入會話文件,同時會話值僅在內存中。 這也是我們在頭部重定向后使用 session_write_close 或 exit 的原因,以便此時會話已經寫入。
也許您可以在嘗試刪除會話之前檢查會話是否可用? 例如: https : //github.com/yiisoft/yii/commit/45d6a7d51be2ea12a935a94511290cb9670706d9
我遇到了同樣的問題,並通過更新文件夾的讀寫權限來解決它,如github此處所述。 希望它可以幫助某人。
我告訴你什么對我有用:我讀到錯誤:**警告:session_regenerate_id():會話對象的銷毀失敗......**我做了什么? 我只需轉到指示文本的文件夾並刪除存儲在那里的所有密鑰,我解決了問題,它使我退出了會話但是現在我再次進入和離開沒有更多錯誤
嘗試在 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);
}
}
}
嘗試在 session_regenerate_id() 之前添加 @ 就像
@session_regenerate_id(true);
我也面臨同樣的問題,但是當我在 session_regenerate_id(true) 之前添加 @ 時,它會消失並且系統會相應地工作。
希望這可以幫助。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.