【Azure】PHPのフォームでファイルサイズの大きいファイルをアップロードすると404がでる件

2014年05月30日

  1. TOP
  2. BLOG
  3. Azure
  4. 【Azure】PHPのフォームでファイルサイズの大きいファイルをアップロードすると404がでる件

これはIISを普段から使っている人であれば常識の範囲なのでしょうが、
普段使ったことの無い私にはとても困りました。
と言うことで、いきさつと対応方法までを以下にまとめます。

環境

サービス : Azure
Webサーバ : IIS7
言語 : PHP5.4
DB : MySQL 5

したいこと

上記環境で実装したフォームから最大120Mのファイルをアップロード出来るようにしたい。

現象のおさらい

①PHPで稼働しているフォームからファイルをアップロード
②成功する場合と404のエラーが表示される場合がある

何故、成功する場合と失敗する場合があるのでしょうか。
404 = not Foundなのでページが存在しないと言う意味ですよね?
成功している場合もあるので404になるわけが無いはずなのに・・・

エラーログにも404って書いてあるけど、ログのURLを叩くとちゃんと遷移出来る。
とにかく思いつくものを手当たり次第、修正していくしかありません。

対応内容[失敗]

 これについて以下の対応を行いました。
◆php.iniでファイルアップロードに関係する以下を変更

#メモリ使用量の上限
memory_limit = -1

#POSTデータの最大サイズ
post_max_size = 256M

#1ファイルあたりの最大アップロードサイズ
upload_max_filesize = 256M

詳しい説明は省くとして上記サイズでは
問題なく動くはずなのですがAzureに上げると動かない。。

状況は変わらず。
再度ネットで検索が続きます。

対応内容[成功]

 調べた続けた結果ファイルアップロードの制御をIIS7も行っていることが判明。
しかもIISの許容しているファイルサイズをオーバすると強制的に404に飛ばす仕様らしいのです。。
これはヒドい。。。

ともあれ原因が分かったので対応していきましょう
サーバ英語ですいません。。

Windows管理ツールの[インターネット インフォーメーション サービス マネージャー]を選択
2

次に要求フィルターをダブルクリック
3

右画面の操作[機能設定の編集]をクリック
4

出てきたポップアップの許可されたコンテンツ最大長を256000000
※単位はbyte
名称未設定-1
これで上限が256Mに出来ました。
やっと一安心。

それにしても404はひどすぎます・・