• このエントリーをはてなブックマークに追加

PHPのメモリリミット・POSTデータの容量・最大アップロードファイル容量の設定

WordPress等のメディアファイルのアップロード。このファイルの最大容量とか、メモリの最大値とかは、サーバー側で設定が決まっている。それも、サーバーによって容量は様々。

場合によってはこれらの設定が効かないことがあるので注意が必要。

それを踏まえた上で、メモリなどの設定をぱっと変更して、動作のチェックをしてみようかと思う。

64MBに設定するときはこんな感じ。

php_value memory_limit 64M
php_value post_max_size 64M
php_value upload_max_filesize 64M

256MBに設定するときはこんな感じ。

php_value memory_limit 256M
php_value post_max_size 256M
php_value upload_max_filesize 256M

約1GBに設定するときはこんな感じ。

php_value memory_limit 1000M
php_value post_max_size 1000M
php_value upload_max_filesize 1000M

単位を揃えたい場合はこんな感じ。

php_value memory_limit 1024M
php_value post_max_size 1024M
php_value upload_max_filesize 1024M

様々な容量に関する設定

ファイルのアップロード容量の他に、PHPの実行時間には上限が設けられている。さらに、一度にどれだけのファイルをアップロード可能なのかということも決められている。

パラメータの設定は一つだけではうまく動作しない。すべてセットで書かないと、アップロードサイズは変更したけれども、一時的に保存するためのメモリが足りなければ、そのメモリが上限となる。そのため、上記例の通り、いくつかのパラメータを組み合わせてセットで記述する。

最後に一つずつ、おさらいと合わせて、確認しておこう。

memory_limit

PHPを利用する際にPHPのメモリの設定上限容量を変更するためのパラメータ(オプション・値)。実行したPHPのファイルがとってもメモリ食いで、強烈なプログラムだと、デフォルトのPHP設定では間に合わず、Fatal errorとなって停止する。

こういったときには、メモリを余裕をもたせるようにするか、あるいは、PHPの最大値を変更する。

php_value memory_limit 128M

post_max_size

一度にPOSTで送信できるファイルの容量を設定するためのパラメータ(オプション・値)。 これは、一つのファイル容量ではない。すべての送信データ容量ということになるので、100MBのupload_max_filesizeが指定されていたとしても、それを2つ送信すると、下記記述だとオーバーする。

php_value post_max_size 128M

そういった場合には、upload_max_filesizeの2個分とか3個分記述するのが良い。ただ、ほかのプログラムなどいろいろ入れるので、考えるのがめんどい。だったら、難しいことを考えずに、サーバーが許す限りメモリなど容量も合わせてアップしておいたほうが楽。

php_value post_max_size 128M

upload_max_filesize

アップロードするファイルひとつあたりの許容最大容量。それを設定するためのパラメータ(オプション・値)。128Mならば、128MBの画像などがアップロード可能になる。ただし、post_max_sizeやmemory_limit、あるいは、アップローダーがPHPならば、max_execution_timeなどが影響する。

php_value upload_max_filesize 128M

max_execution_time

処理を始めてPHPが停止するまでの実行時間を設定するパラメータ(オプション・値)。秒数で指定する。なので、1分ならば60。 2分だと120。3分は180。600にすると10分。

その処理の間ブラウザを閉じると、処理がストップ。

php_value max_execution_time 600

php_value ignore_user_abort

メモリや値とは違うが、max_execution_timeとセットで記述したいもの。これは、ネットワークが切れたり、ブラウザを誤って閉じてしまったときでも、処理を継続させるための設定。通常はOFF。これをONにすることで、処理が継続される。時間はmax_execution_timeに準ずる。

php_value ignore_user_abort On

max_file_uploads

同時にアップロードができるファイルの最大数をパラメータ(オプション・値)で指定。容量ではなく、ファイルの上限数を設定する。

max_file_uploads = 20

これだと、ファイルがどれだけ小さくて、許容の範囲内だったとしてもファイル数が21個になると、アップロードされない。

余裕を持たせるために

max_file_uploads = 50

とかにしておくと、50個同時にアップできる。