裏紙に書く程度の内容

php ファイルアップロードの上限サイズ設定

サイズの大きいファイルをアップロードしてPHPで受け取る際、PHPで上限値が設定されているためうまくいかない場合があります。

その時いじる設定値の覚書です。

php.iniによる設定

php.iniを修正できる場合は以下の設定値を確認します。

upload_max_filesize

アップロードされるファイルの最大サイズ

upload_max_filesize = 2M

デフォルトは2M

post_max_size

POSTデータに許可される最大サイズを設定します。この設定は、ファ イルアップロードにも影響します。大きなファイルをアップロード するには、この値を upload_max_filesize より大きく設定する必要があります。

post_max_size = 8M

デフォルトは8M

0にすると無制限になる。
PHP5.3.4以降では’コンテンツタイプが application/x-www-form-urlencoded’あるいは PHP に登録されていないものであった場合、無制限ではない。

memory_limit

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

memory_limit = 128M

PHP 5.2.0 より前はデフォルト 8M,
PHP 5.2.0 はデフォルト 16M,
それ以外はデフォルト128M

max_execution_time

スクリプトがパーサにより強制終了されるまでに許容される最大の 時間を秒単位で指定します。

max_execution_time = 30

デフォルト 30秒

※Apache等webサーバ側にもタイムアウトの設定があり、その設定によってPHPの実行が中断される場合もある。

max_file_uploads

同時にアップロードできるファイルの最大数。

max_file_uploads = 20

デフォルト20。PHP 5.2.12 以降で利用可能。

.htaccessによる設定

各設定値を.htaccessで設定する方法です。レンタルサーバ等、webサーバのコンフィグファイルがさわれない場合はこの方法で設定することになるでしょう。

前述設定値のデフォルト値と変更可能箇所を一覧にすると下記になります。

名前 デフォルト 変更可能
upload_max_filesize 2M PHP_INI_PERDIR
post_max_size 8M PHP_INI_PERDIR
memory_limit 128M PHP_INI_ALL
max_execution_time 30 PHP_INI_ALL
max_file_uploads 20 PHP_INI_SYSTEM

max_file_uploads以外はPHP_INI_ALL,PHP_INI_PERDIRなので.htaccessで設定できます。

設定例

php_value upload_max_filesize 10M
php_value post_max_size 20M
php_value memory_limit 512M
php_value max_execution_time 300

apache設定ファイルによる設定

自前のサーバやvps等、apacheの設定ファイルがいじれる場合はこちらでもできます。

apacheの設定ファイル設定する場合はmax_file_uploadsも設定可能です。

<Directory "/var/www/hogehoge">
    php_value upload_max_filesize 10M
    php_value post_max_size 20M
    php_value memory_limit 512M
    php_value max_execution_time 300
    php_value max_file_uploads 50
</Directory>

プログラム内で設定する場合

前述表の’変更可能‘がPHP_INI_ALLになっている、memory_limit,max_execution_timeはプログラム内でも設定可能です。

ini_set()を使用します。

<?php
  ini_set('memory_limit', '512M');
  ini_set('max_execution_time', '300');

特定の処理時のみ、対応する場合はこの方法になると思います。

参考

http://bashalog.c-brains.jp/12/02/02-105952.php

Index