【问题标题】:Get $_SERVER variables in zf2 within controller在控制器中的 zf2 中获取 $_SERVER 变量
【发布时间】:2014-12-24 06:38:40
【问题描述】:
在控制器中,如何在 zf2 中获取 $_SERVER 变量?
比如我想得到$_SERVER['HTTP_HOST']、$_SERVER['REMOTE_ADDR']等等。
我尝试过使用以下方法:
$this->getRequest()->getServer();
但这会导致:
Fatal error: Call to undefined method Zend\Http\Request::getServer()
【问题讨论】:
标签:
php
controller
zend-framework2
server
superglobals
【解决方案1】:
要从控制器中获取 $_SERVER 值,我可以这样做:
$request = new \Zend\Http\PhpEnvironment\Request();
$httpHost = $request->getServer('HTTP_HOST');
$remoteAddr = $request->getServer('REMOTE_ADDR');
由于我正在回答我自己的问题,我很想知道是否有任何其他推荐的解决方案。
【解决方案2】:
如果你的控制器扩展了 AbstractActionController,你可以在 zf2 v2.4 中使用$this->getRequest()->getServer()->get('REMOTE_ADDR');
class ListController extends AbstractActionController
{
public function indexAction()
{
$addr = $this->getRequest()->getServer()->get('REMOTE_ADDR');
\Zend\Debug\Debug::dump($addr); die();
}
}