Zend framework Zend 1.12不允许使用Rest PUT方法

Zend framework Zend 1.12不允许使用Rest PUT方法,zend-framework,zend-rest,Zend Framework,Zend Rest,由于我迁移到AWS并更新到PHP5.4和Zend 1.12,我对PUT&DELETE方法有一个问题 一个简单的例子: /**Zend 1.12**/ /**引导/路线**/ $front = \Zend_Controller_Front::getInstance(); $front->setParam('bootstrap',$this); //REST API $router = $front->getRouter(); $restRoute = new Zend_Rest_Rou

由于我迁移到AWS并更新到PHP5.4和Zend 1.12,我对PUT&DELETE方法有一个问题

一个简单的例子:

/**Zend 1.12**/

/**引导/路线**/

$front = \Zend_Controller_Front::getInstance();
$front->setParam('bootstrap',$this);
//REST API
$router = $front->getRouter();
$restRoute = new Zend_Rest_Route($front, array(), array(
    'default' => array('rest'),
));
$router->addRoute('rest', $restRoute);
/**restController**/

//module : default 

class RestController extends  \Zend_Rest_Controller
public function init(){
    parent::init();
    $this->_helper->viewRenderer->setNoRender(true);
    $this->_helper->layout->disableLayout();
}
public function headAction(){}

public function indexAction()
{
    Throw new AppException(Translator::translate('index not yet implemented...'));
}
public function getAction()
{
    die('get');
}
public function putAction(){
 die('put');
}
/*测试用例*/

curl -X GET http://XXXX/rest/MS4xMjU2LjEyNTguMTI2MS4tbW9kZWxzXGNvcmVcbW9kZWxcZXhlcmNpc2VcZXhlcmNpc2VfcXVlc3Rpb24tMTQy
结果:get==>OK

curl -X PUT http://XXXX/rest/MS4xMjU2LjEyNTguMTI2MS4tbW9kZWxzXGNvcmVcbW9kZWxcZXhlcmNpc2VcZXhlcmNpc2VfcXVlc3Rpb24tMTQy
结果:

<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>405 Method Not Allowed</title>
</head><body>
<h1>Method Not Allowed</h1>
<p>The requested method PUT is not allowed for the URL /index.php.</p>
<hr>
<address>Apache/2.2.16 (Debian) Server at XXXXX Port 80</address>
</body></html>

405方法不允许
方法不允许
URL/index.php不允许请求的方法PUT


XXXXX端口80上的Apache/2.2.16(Debian)服务器
=>不正常

我不必使用WebDav(或其他)Apache插件来启用PUT/DELETE请求。PHP处理程序处理这个问题,而不是Apache。 那么为什么,GET是可以的,而PUT不是?为什么Apache说index.php而不是/rest/RestController.php

我看到Zend从1.12开始更新它的Zend_Rest_控制器。现在,我必须声明“headAction”函数,但我没有找到关于这一点的文档

如果你有任何想法


谢谢,

问题可能源于Apache配置。 也许你应该继续添加类似的内容

<Directory />
    AllowOverride All
    <Limit GET HEAD POST PUT DELETE OPTIONS>
        Order Allow,Deny
        Allow from all
    </Limit>
</Directory>

允许超越所有
命令允许,拒绝
通融
到您的apache配置


看看这个。

我已经尝试过这个解决方案,但它也不起作用。在我以前的配置中,我不需要更改Apache配置。选项如下:SymLinks允许在RewriteCond%{REQUEST_FILENAME}-s[或]RewriteCond%{REQUEST_FILENAME}-d RewriteRule^.*$-[NC,L]RewriteRule^.*$index.php[NC,L]顺序允许,不管怎样,拒绝允许所有问题都不在ZF中。在我的环境中,您的代码片段工作正常。可能与