本ページは広告が含まれています。気になる広告をクリック頂けますと、サーバ運営費になります(^^
通常、WordPressのファイルアップロード容量は、phpの設定に依存します。Debian Jessie でapt管理されているphp5をインストールすると、PHPで受け付けるアップロード容量は2MBになっています。
ファイル容量が大きいものも取り扱いと思うと、ちょっと2MBは小さいですよね。携帯を利用して動画をアップする事も可能です。
.htaccessで調整します
php_value upload_max_filesize 500M
php_value post_max_size 500M
こうすると、アップロードファイル容量は500MBになります。ただ、これだけではエラーが出ます。
[Thu Apr 21 10:19:36.532711 2016] [:error] [pid 4937] [client 123.221.218.205:61034] PHP Fatal error: Allowed memory size of 629145600 bytes exhausted (tried to allocate 172930141 bytes) in /var/www/wp01/wp-includes/class-IXR.php on line 212
まずは、phpのメモリ容量です。apacheのエラーログを見ると、phpに割り当てられているメモリ容量が足りない事が分かります。
なので、.htaccessに追記しました
php_value memory_limit 1000M
さらにエラー発生で、
[Thu Apr 21 10:57:46.158013 2016] [:error] [pid 4925] [client 123.221.218.205:63110] PHP Fatal error: Maximum execution time of 30 seconds exceeded in /var/www/wp01/wp-includes/class-IXR.php on line 290
.htaccessに以下を追記するも
php_value ignore_user_abort On
php_value max_excution_time 600
状況変わらず、仕方がないのでphp.ini自体をいじります
; Maximum execution time of each script, in seconds ; http://php.net/max-execution-time ; Note: This directive is hardcoded to 0 for the CLI SAPI max_execution_time = 600
実行時間を長くしても、サーバマシン自体が非力だと結局うまくいかない。
現在試しているのが、ノートパソコン Pen4 512MBマシンだけど、memory_limitを1000MBに上げた関係で挙動がおかしくなった。マシンが遅くて使い物にならない。状態としてはスワップしながらHDD一生懸命アクセスしている感じ。ファイルサイズ120MBのファイルをアップロードできるように考えていたが、
memory_limit 32MB
memory_limit 64MB
では、ともに
Fatal error: Allowed memory size of
がエラーログに残り結局アップロードできなかった。PHPで、ファイルアップローダの仕組みを作り、大容量ファイルを扱おうと思うと、結構大きなメモリを積んでないとダメらしい。
php.iniのマニュアルを見ると
memory_limit
integer
スクリプトが確保できる最大メモリをバイト数で指定します。この命令は、 正しく書かれていないスクリプトがサーバーのメモリを食いつぶすことを防止するのに役立ちます。 もし、使用可能メモリに制限を設けたくない場合は、 ここに -1 を指定してください。
と書いてあるんだけど、ファイルアップロード容量にどうかかわるのかは詳しく説明していない。サイトによっては、ファイルアップロード容量は
- memory_limit(使用できるメモリの上限設定)
- post_max_size(POSTされるデータの上限設定)
- upload_max_filesize(アップロードされるファイルサイズの上限設定)
この3つの指標によって成り立っており、
memory_limit >= post_max_size >= upload_max_filesize
でないといけないって書いてあるんだけど、ファイルサイズの大きいファイルをアップロードしようとしたときにそれ以上の物理メモリや仮想メモリを準備しなきゃいけないっていうのもどうなんだろうなって思う所。これが本当だとすると、PHPのファイルアップロードにはメモリ問題がある。特にファイルサイズが大きいものを複数同時にアップロードしたいってなったらどうなるんだろう。