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

[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のマニュアルを見ると

コア 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のファイルアップロードにはメモリ問題がある。特にファイルサイズが大きいものを複数同時にアップロードしたいってなったらどうなるんだろう。

 

 

タイトルとURLをコピーしました