php - Zend 2 错误 : Uncaught exception 'Zend\Stdlib\Exception\InvalidArgumentException'

标签 php session zend-framework zend-framework2

我通过 bootstarp 方法从布局上的 Zend 2 session 容器中检索数据。

public function onBootstrap(MvcEvent $e)
{
    $eventManager        = $e->getApplication()->getEventManager();
    $sm = $e->getApplication()->getServiceManager();
    $moduleRouteListener = new ModuleRouteListener();
    $moduleRouteListener->attach($eventManager);

    $user = $this->getUser($sm);
    $viewModel = $e->getApplication()->getMvcEvent()->getViewModel();
    $viewModel->user = ($user) ? $user: false;
}

public function getUser($sm)
{
    $user= false;
    $userTable= $sm->get('User\Model\UserTable');
    $userSession = new Container('userSession');

    //RETRIEVE USER FROM DB

    return $user;
}

现在我有时(不总是)遇到以下错误

Fatal error: Uncaught exception 'Zend\Stdlib\Exception\InvalidArgumentException' with message 'Passed variable is not an array or object, using empty array instead' in /var/www/T2oRecruitment/app/vendor/zendframework/zendframework/library/Zend/Stdlib/ArrayObject.php:184 Stack trace: #0 
/var/www/T2oRecruitment/app/vendor/zendframework/zendframework/library/Zend/Stdlib/ArrayObject.php(411): Zend\Stdlib\ArrayObject->exchangeArray(NULL) #1 [internal function]: Zend\Stdlib\ArrayObject->unserialize('a:4:{s:7:"stora...') #2 
/var/www/T2oRecruitment/app/vendor/zendframework/zendframework/library/Zend/Session/SessionManager.php(95): session_start() #3 
/var/www/T2oRecruitment/app/vendor/zendframework/zendframework/library/Zend/Session/AbstractContainer.php(78): Zend\Session\SessionManager->start() #4 
/var/www/T2oRecruitment/app/module/Application/Module.php(22): Zend\Session\AbstractContainer->__construct('userSession') #5 
/var/www/T2oRecruitment/app/module/Application/Module.php(43): Application\Module->getUser(Object(Zend\S in /var/www/T2oRecruitment/app/vendor/zendframework/zendframework/library/Zend/Stdlib/ArrayObject.php on line 184

问题是什么?

最佳答案

请试试这个:

在 Module.php 文件中 --->

use Zend\Session\Config\SessionConfig, Zend\Session\SessionManager,
    Zend\Session\Container, Zend\Mvc\MvcEvent;
// other libraries

public function onBootstrap(MvcEvent $e)
{
    $eventManager        = $e->getApplication()->getEventManager();
    $sm = $e->getApplication()->getServiceManager();
    $moduleRouteListener = new ModuleRouteListener();
    $moduleRouteListener->attach($eventManager);

    $config = $sm->get('Config');

    $sessionConfig = new SessionConfig();
    $sessionConfig->setOptions($config['session']);
    $sessionManager = new SessionManager($sessionConfig);
    $sessionManager->start();

    $user = $this->userSession($sm);
    $viewModel = $e->getApplication()->getMvcEvent()->getViewModel();
    $viewModel->user = ($user) ? $user: false;
}

在 module.config.php 文件中 --->

return array(
    'session' => array(
        'remember_me_seconds' => 2419200,
        'use_cookies' => true,
        'cookie_httponly' => true
    ),
);

希望这会给您一些解决问题的想法。谢谢:)

关于php - Zend 2 错误 : Uncaught exception 'Zend\Stdlib\Exception\InvalidArgumentException' ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24817449/

相关文章:

php - 在查询中使用 $_SESSION ['id' ] 不好吗?

php - "Ambiguous output redirect"是什么意思?

PHP 5 : What DAL are you using?

php - Zend Framework 上的公共(public)文件夹

php - MySQL 插入多个数据库 - 问题

php - 用PHP更新MYSQl导致空白页

asp.net-mvc-3 - 如何在我的所有 View 上获得可用的服务堆栈 session ?

python - 你如何在 CherryPy 中使用 cookie 和 HTTP 基本身份验证?

asp.net - 列出所有事件的 ASP.NET session

zend-framework - Zend Translate 找不到语言