タグ:apache
PHPでアップロードできる上限は2GBまで!【POSTの場合】
<form action="hoge.php" enctype="multipart/form-data" method="POST"> <input name="hogefile" type="file" /> <input type="submit" value="送信" /> </form>
PHPを使用して、このような形式でファイルをアップロードする場合、アップロードされるファイルサイズの上限はphp.iniで設定されています。(正確には.htaccessやPHP自身でも設定できますが。)
php.iniには、アップロードファイルの上限を設定する箇所が3つあります。
- memory_limit(使用できるメモリの上限設定)
- post_max_size(POSTされるデータの上限設定)
- upload_max_filesize(アップロードされるファイルサイズの上限設定)
です。
それぞれ
memory_limit >= post_max_size >= upload_max_filesize
という関係になっています。
つまり、「upload_max_filesize」をいくら増やしても、「post_max_size」で設定されているサイズ以上のファイルはアップロードできないし、「post_max_size」を増やしても、「memory_limit」で設定されているサイズ以上のファイルはアップロードできないというわけです。
例:
memory_limit = "128MB"
post_max_size = "512MB"
upload_max_filesize = "1G"
この場合、アップロードできるファイルサイズの上限は128MBとなります。
memory_limit = "128MB"
post_max_size = "1G"
upload_max_filesize = "1G"
この場合でも同様。
もちろん、memory_limitは、サーバのメモリサイズ(仮想メモリ含む)の上限を超えることはできません。
つまり、
memory_limit = "2G"
post_max_size = "2G"
upload_max_filesize = "2G"
こう設定したとしても、実際のサーバのメモリ(+仮想メモリ)が1GB分しかなければ、1GBまでしかアップできないということになります。(他にもメモリ使ってるだろうから実際はもっと低い)
では、サーバのメモリを12GBくらい積んで
memory_limit = "4G"
post_max_size = "4G"
upload_max_filesize = "4G"
とした場合、4GBまでアップロードできるようになるか?
答えはNoです。
この原因は、apacheにあります。
apacheの設定に、「LimitRequestBody」というものがあり、これの上限は2GBとなっています。
「LimitRequestBody」はその名の通り、HTTPリクエストのボディ部分のサイズ限界です。
いくらPHP側の設定で、2GB以上を迎え入れる準備をしたところで、HTTPリクエストの方で限界を迎えるわけです。
まあ、2GB以上をアップすることは中々ないとは思いますが、大容量のファイル共有サイトなどを作ろうと思ったりした場合は、注意が必要ですね。(FTP接続の方式にすればうまくいくかも。)
参考サイト
総合管理者 | 2015年10月16日 | コメント(3) | トラックバック(1) | PHP関連
suExecをhomeフォルダ以下で有効にする
メモ。
専用サーバにて、マルチドメインに対応させるべく、あれこれ試行錯誤中。
とりあえず「var/www/」フォルダにウェブサイトを置くのではなく
/home/ユーザ名/www/html
/home/ユーザ名/www/cgi-bin
というレンタルサーバではよくある構成にし、httpd.confにて、それぞれドメインを割り当てる設定にしたのですが、ウェブサイトは正常に表示できるようになったものの、cgi-binの中に入れたperlが動かない・・・
正確には「httpd.conf」で「SuexecUserGroup」を設定したとたん動かなくなるんですが、設定どおりのユーザ名とグループにしているはずなのに動く気配なし。
『Error 500 「Internal Server Error」について』の二の足は踏まん!と思ってたはずなのにこの有様・・・
いろいろと調べた結果、『今の設定だと「/var/www」以下に設置しないと「suExec」は有効にならないよ』ということが分かったんですが、その設定の変更方法が分からず、Googleであれこれ調べまくっているとこちらの記事を発見!
びっくりするほどわかりやすく説明してくれております。
この設定どおりに変更したところ、無事homeフォルダでも動くようになりました。
nandani | 2012年04月12日 | コメント(0) | トラックバック(0) | OS関連 | サーバー関連