Как побороть запуск сессии ZF2 в консольном запросе

1

Я запускаю действие ZF2 с терминала, используя консольный маршрут. Бегущий пользователь не является Apache, и запрос не является HTTP-запросом. Приложение выдает сообщение об ошибке, что у него нет разрешения на запись файла сеанса.

Есть ли способ избежать сеанса, когда я использую консольный маршрут?

  • 0
    Что используете для ОС и HTTP сервера? Кажется, проблема с разрешением папки.
  • 0
    его Linux OS и сервер Apache.
Показать ещё 2 комментария
Теги:
session
zend-framework2

1 ответ

1

Запросы консоли и HTTP-запросы можно отличить от eachother классом запроса. Вы можете использовать это, чтобы распознать тип запроса и отключить или включить определенные функции в своем приложении:

Вы можете легко использовать это в файле module.php например, в методе начальной загрузки. Я буду использовать пример сеанса из документации ZF2, чтобы показать, как это может работать:

<?php
use Zend\Mvc\MvcEvent;
use Zend\Http\Request as HttpRequest;
use Zend\Console\Request as ConsoleRequest;
use Zend\Session\SessionManager;
use Zend\Session\Container;

class Module
{
    public function onBootstrap(MvcEvent $event)
    {
        $eventManager        = $event->getApplication()->getEventManager();
        $moduleRouteListener = new ModuleRouteListener();
        $moduleRouteListener->attach($eventManager);

        $this->bootstrapSession($event);
    }

    public function bootstrapSession(MvcEvent $event)
    {
        $request = $event->getRequest();

        if($request instanceof ConsoleRequest){
            // nothing to do
            return
        }

        $session = $event->getApplication()
                         ->getServiceManager()
                         ->get('Zend\Session\SessionManager');
        $session->start();

        //... remaining code for session
    }
}

Конечно, вы можете думать о любом другом варианте:

if(! $request instanceof HttpRequest){
    return;
}

if($request instanceof ConsoleRequest){
    //.. do something
}elseif($request instanceof HttpRequest){
    //.. do something else
}

Ещё вопросы

Сообщество Overcoder
Наверх
Меню