我有一个使用Zend framework 1.12创建的php应用程序。有一个运行php cli脚本的Zend动作。 session_id作为参数传递给cli脚本。
Zend Bootstrap.php,由Web应用程序和cli脚本共享。
protected function _initSession()
{
global $argv;
$this->bootstrap('database');
if (APPLICATION_ENV == 'testing') {
require_once 'Zend/Session.php';
Zend_Session::$_unitTestEnabled = true;
return;
}
$config = array(
'name' => 'session',
'primary' => 'session_id',
'modifiedColumn' => 'modified',
'dataColumn' => 'data',
'lifetimeColumn' => 'lifetime'
);
Zend_Session::writeClose(); //cancel the session's auto start,important
$saveHandler = new Zend_Session_SaveHandler_DbTable($config);
Zend_Session::setSaveHandler($saveHandler);
if (defined('APPLICATION_TYPE')
&& (APPLICATION_TYPE == 'cli' ||
APPLICATION_TYPE == 'standalone')) {
//Restore the session and then start it. job_id:session
$d = explode(':', $argv[1]);
if (count($d) > 1) {
$job_id = $d[1];
if (!empty($job_id)) {
Zend_Session::setId($job_id);
}
}
}
Zend_Session::start();
return null;
}
我有一个从web脚本保存的会话,我想在cli脚本中访问它。
该设置适用于使用php 5.5.14版的mac。它在php版本5.3.10
的Linux服务器上不起作用知道可能是什么问题吗?
答案 0 :(得分:0)
我发现了这个问题。问题出在suhosin上。 suhosin的默认选项是加密会话ID。我不得不将加密设置为关闭。
suhosion.session.encrypt = off