WordPressアップロードファイル容量を変更

通常、WordPressのファイルアップロード容量は、phpの設定に依存します。Debian Jessie でapt管理されているphp5をインストールすると、PHPで受け付けるアップロード容量は2MBになっています。

アップロード容量

ファイル容量が大きいものも取り扱いと思うと、ちょっと2MBは小さいですよね。携帯を利用して動画をアップする事も可能です。

.htaccessで調整します

php_value upload_max_filesize 500M
php_value post_max_size 500M

こうすると、アップロードファイル容量は500MBになります。ただ、これだけではエラーが出ます。

アップロード容量2

まずは、phpのメモリ容量です。apacheのエラーログを見ると、phpに割り当てられているメモリ容量が足りない事が分かります。

なので、.htaccessに追記しました

php_value memory_limit 1000M

さらにエラー発生で、

.htaccessに以下を追記するも

php_value ignore_user_abort On
php_value max_excution_time 600

状況変わらず、仕方がないのでphp.ini自体をいじります

実行時間を長くしても、サーバマシン自体が非力だと結局うまくいかない。

現在試しているのが、ノートパソコン Pen4 512MBマシンだけど、memory_limitを1000MBに上げた関係で挙動がおかしくなった。マシンが遅くて使い物にならない。状態としてはスワップしながらHDD一生懸命アクセスしている感じ。ファイルサイズ120MBのファイルをアップロードできるように考えていたが、

memory_limit 32MB
memory_limit 64MB

では、ともに

がエラーログに残り結局アップロードできなかった。PHPで、ファイルアップローダの仕組みを作り、大容量ファイルを扱おうと思うと、結構大きなメモリを積んでないとダメらしい。

php.iniのマニュアルを見ると

http://phpspot.net/php/man/php/ini.core.html

memory_limit integer

スクリプトが確保できる最大メモリをバイト数で指定します。この命令は、 正しく書かれていないスクリプトがサーバーのメモリを食いつぶすことを防止するのに役立ちます。 もし、使用可能メモリに制限を設けたくない場合は、 ここに -1 を指定してください。

と書いてあるんだけど、ファイルアップロード容量にどうかかわるのかは詳しく説明していない。サイトによっては、ファイルアップロード容量は

  • memory_limit(使用できるメモリの上限設定)
  • post_max_size(POSTされるデータの上限設定)
  • upload_max_filesize(アップロードされるファイルサイズの上限設定)

 

この3つの指標によって成り立っており、

memory_limit >= post_max_size >= upload_max_filesize

でないといけないって書いてあるんだけど、ファイルサイズの大きいファイルをアップロードしようとしたときにそれ以上の物理メモリや仮想メモリを準備しなきゃいけないっていうのもどうなんだろうなって思う所。これが本当だとすると、PHPのファイルアップロードにはメモリ問題がある。特にファイルサイズが大きいものを複数同時にアップロードしたいってなったらどうなるんだろう。