我正在使用Zend框架1,我需要在运行时使用预定义的前缀更改会话id,但是我得到以下错误"会话已经开始。必须先设置会话id。"问题是,即使在调用destroy和writclose之后,会话状态仍然保持启动状态。我还尝试使用php方法unset &销毁,但还是一样的问题。
$oldSession = new Zend_Session_Namespace();
Zend_Session::destroy();
Zend_Session::writeClose();
$sessId = "dskjfghdsjfhsdkf"; //Random hash
Zend_Session::setId("myprefix".$sessId);
$newSession = new Zend_Session_Namespace();
foreach($oldSession as $idx => $data){
$newSession->$idx = $data;
}
看起来是不可能的,
Zend_Session.php代码片段:
if (!self::$_unitTestEnabled && defined('SID')) {
/** @see Zend_Session_Exception */
require_once 'Zend/Session/Exception.php';
throw new Zend_Session_Exception('The session has already been started. The session id must be set first.');
}