我正在使用控制台路由从终端运行ZF2操作。 正在运行的用户不是Apache,请求不是http请求。应用程序抛出一个错误,即它没有写入会话文件的权限。
在使用控制台路由时有没有办法避免会话?
答案 0 :(得分:1)
请求类可以将控制台请求和http请求彼此区分开来。您可以使用它来识别请求类型并禁用或启用应用程序中的某些功能:
您可以在module.php
文件中轻松使用此功能,例如在bootstrap方法中。我将使用会话示例from the ZF2 documentation来说明这是如何工作的:
<?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
}