是什么导致session_regenerate_id(true)返回false?

时间:2017-07-11 19:23:40

标签: php session

\Console::log('session_statusxxx',session_status(),ini_get('session.use_trans_sid'));
if(!session_regenerate_id(true)) { // user attempted to log in; create a new session for him
    throw new \Exception("Could not regenerate session ID");
}
\Console::log('session_statusxxx',session_status());

我遇到了这个例外 - 即session_regenerate_id正在返回false

在致电session_regenerate_id之前,我可以看到session_status()2PHP_SESSION_ACTIVEsession.use_trans_sid"0"

不应session_regenerate_id销毁活动会话并开始新会话吗?

2 个答案:

答案 0 :(得分:1)

有很多理由

https://github.com/php/php-src/blob/a2d766503aed619493386a9b4ef8190be62b36f7/ext/session/session.c#L2078

他们都发出警告以提供更多信息,尝试显示这些通知/记录有关失败原因的额外信息。

答案 1 :(得分:0)

如果您使用SessionHandlerInterface,请仔细检查session_set_save_handler的实施情况。就我而言,我从一些函数中返回了错误的值。例如,如果没有会话,read应该返回空字符串,而不是falsedestroy应该返回truefalse,等