Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationEventAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
1
Help us understand the problem. What is going on with this article?

More than 3 years have passed since last update.

@imunew

PHP on Azure App Serviceで、PATCH、PUT、DELETEができないときにやること(2017版)

何が問題か

PHP on Azure App Serviceな環境で、PATCH、PUT、DELETEなリクエストがエラーになります。

The page you are looking for cannot be displayed because an invalid method (HTTP verb) is being used

対処法が下記のブログに書いてはあるのですが、そのままでは動かなかったので、2017年版として更新しておきます。

どうするか

web.configsystem.webServerにを下記のように追加します。
v7.1の部分は使用しているPHPのバージョンによって読み替えてください。

<!-- web.config -->
<configuration>
  <system.webServer>
    <!-- 中略 -->
    <handlers>
        <remove name="PHP71_via_FastCGI" />
        <add name="PHP71_via_FastCGI" modules="FastCgiModule" verb="GET, PATCH, PUT, POST, DELETE, HEAD, OPTIONS" path="*.php" scriptProcessor="D:\Program Files\PHP\v7.1\php-cgi.exe" resourceType="Either" requireAccess="Script" />
    </handlers>
  </system.webServer>
</configuration>    

前述のブログにて紹介されている対処法と違うところを列挙します。

  • scriptprocessorresourcetyperequireaccessだとエラーになる
    • Unrecognized attribute 'scriptprocessor'となる
    • scriptProcessorresourceTyperequireAccessが正解
  • 64ビット版の場合は、D:\Program Files\
    • 32ビット版は、D:\Program Files (x86)\
  • verbに何故かPATCHがない
    • PATCHを追加
    • TRACE, PROPFIND, PROPPATCH, MKCOL, COPY, MOVE, LOCK, UNLOCKは不要なので削除

どうなるか

これで、PATCH, PUT, DELETEなリクエストに対して、200 OKが返ってくるはずです。

$ curl -i -X PATCH \
  http://{appName}.azurewebsites.net/{path to API} \
  -H 'content-type: application/json' \
  -H 'x-requested-with: XMLHttpRequest' \
  -d '{
    "foo": "bar"
}'
HTTP/1.1 200 OK
Cache-Control: no-cache, private
Content-Length: 13
Content-Type: application/json
Server: Microsoft-IIS/8.0
X-Powered-By: PHP/7.1.8
X-RateLimit-Limit: 60
X-RateLimit-Remaining: 59
X-Powered-By: ASP.NET
...

{"bar":"baz"}

つうか、デフォルトでPATCH, PUT, DELETEは許可してほしいですね。IIS。。
ではでは。

1
Help us understand the problem. What is going on with this article?
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
1
Help us understand the problem. What is going on with this article?