Seit ich zu AWS migriert bin und auf PHP 5.4 und Zend 1.12 aktualisiert habe, habe ich ein Problem mit den PUT- und DELETE-Methoden.
Ein schnelles Beispiel:
/** Zend 1.12 **/
/** bootstrap / routes **/
$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 **/
//Modul: Standard
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 noch nicht implementiert...'));
}
public function getAction()
{
die('get');
}
public function putAction(){
die('put');
}
/* Testfall */
curl -X GET http://XXXX/rest/MS4xMjU2LjEyNTguMTI2MS4tbW9kZWxzXGNvcmVcbW9kZWxcZXhlcmNpc2VcZXhlcmNpc2VfcXVlc3Rpb24tMTQy
Ergebnis: get ===> OK
curl -X PUT http://XXXX/rest/MS4xMjU2LjEyNTguMTI2MS4tbW9kZWxzXGNvcmVcbW9kZWxcZXhlcmNpc2VcZXhlcmNpc2VfcXVlc3Rpb24tMTQy
Ergebnis:
405 Method Not Allowed
Methode nicht erlaubt
Die angeforderte Methode PUT ist für die URL /index.php nicht erlaubt.
Apache/2.2.16 (Debian) Server at XXXXX Port 80
\===> Nicht OK
Ich muss kein WebDav (oder anderes) Apache-Plugin verwenden, um PUT/DELETE-Anforderungen zu ermöglichen. Der PHP-Handler kümmert sich darum, nicht Apache. Warum also ist das GET OK und das PUT nicht? Warum sagt Apache etwas über index.php anstatt über /rest/RestController.php?
Ich habe gesehen, dass Zend seinen Zend_Rest_Controller seit 1.12 aktualisiert hat. Jetzt muss ich die "headAction" Funktion deklarieren, aber ich habe keine Dokumentation zu diesem Punkt gefunden...
Wenn Sie eine Idee haben...
Danke,