在Web脚本启动的Cli脚本中重新创建Php Web会话

时间:2015-04-07 18:00:35

标签: php zend-framework

我有一个使用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服务器上不起作用

知道可能是什么问题吗?

1 个答案:

答案 0 :(得分:0)

我发现了这个问题。问题出在suhosin上。 suhosin的默认选项是加密会话ID。我不得不将加密设置为关闭。

suhosion.session.encrypt = off