当前位置:  开发笔记 > 编程语言 > 正文

如何在Apache2和PHP中启用和使用HTTP PUT和DELETE?

如何解决《如何在Apache2和PHP中启用和使用HTTPPUT和DELETE?》经验,为你挑选了1个好方法。

应该这么简单.我已经按照我能找到的每个教程和论坛,但我无法让它工作.我只是想在Apache2上用PHP构建一个RESTful API.

在我的VirtualHost指令中,我说:


    AllowOverride All
    
        Order Allow,Deny
        Allow from all
    

然而,我向服务器发出的每个PUT请求都得不到405方法.

有人提倡使用Script指令,但由于我使用mod_php,而不是CGI,我不明白为什么会这样.

人们提到使用WebDAV,但对我来说这似乎有点过分.毕竟,我不需要DAV锁定,DAV文件系统等.我想要做的就是将请求传递给PHP脚本并自己处理所有事情.我只想为干净的语义启用PUT和DELETE.



1> Artefacto..:

您不需要配置任何东西.只需确保请求映射到您的PHP文件并使用带有路径信息的请求.例如,如果您在根目录中有一个handler.php以此内容命名的文件:



以下HTTP请求将起作用:

Established connection with 127.0.0.1 on port 81
PUT /handler.php/bla/foo HTTP/1.1
Host: localhost:81
Content-length: 5
 
boo
HTTP/1.1 200 OK
Date: Sat, 29 May 2010 16:00:20 GMT
Server: Apache/2.2.13 (Win32) PHP/5.3.0
X-Powered-By: PHP/5.3.0
Content-Length: 89
Content-Type: text/html
 
string(3) "PUT"
string(20) "/handler.php/bla/foo"
string(8) "/bla/foo"
string(5) "boo
"
Connection closed remotely.

您可以使用MultiViews隐藏"php"扩展名,也可以使用mod_rewrite使URL完全符合逻辑.

另请参阅AcceptPathInfo指令的文档以及有关如何在enctype multipart/form-data为时使PHP不解析POST数据的问题.


这不回答这个问题.@AndreasJansson,你改变了什么让它运作起来?我有同样的问题,并说"你不需要做任何事情,它已经有效"并不是很有帮助.
我也有同样的问题.在到达.php页面之前发生405错误.所以我无法映射任何东西.
推荐阅读
小色米虫_524
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有