2

AWSに移行し、PHP5.4とZend1.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');
}

/ * TestCase * /

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>

===>OKではありません

PUT / DELETEリクエストを有効にするために、WebDav(または他の)Apacheプラグインを使用する必要はありません。PHPハンドラーは、Apacheではなくそれを処理します。では、なぜ、GETはOKで、PUTはOKではないのでしょうか。Apacheが/rest/RestController.phpではなくindex.phpについて何かを言うのはなぜですか?

Zendが1.12以降Zend_Rest_Controllerを更新しているのを見ました。ここで、「headAction」関数を宣言する必要がありますが、この点に関するドキュメントが見つかりませんでした...

何かアイデアがあれば...

ありがとう、

4

1 に答える 1

0

おそらく、問題は Apache の設定に根ざしています。たぶん、先に進んで次のようなものを追加する必要があります

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

あなたのApache設定に。

この回答を確認してください。

于 2012-10-17T06:36:14.323 に答える