我正在使用控制台路由从终端运行ZF2操作。运行的用户不是Apache,请求也不是http请求。应用程序抛出一个错误,指出它没有写入会话文件的权限。
当我使用控制台路由时,有没有办法避免会话?
发布于 2015-12-09 16:33:46
控制台请求和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
}
https://stackoverflow.com/questions/34170625
复制相似问题