POSTでアップロードできるファイルサイズの制限を変更する方法

PHPでは、POSTフォームのファイルアップロードでファイル容量に制限があります。

これはユーザに大きなファイルを送信されて、サーバ容量が圧迫されないようにするための設定です。

これに影響するphp.iniの設定は次の3項目です。

; Maximum amount of memory a script may consume (8MB)
memory_limit = 8M
; Maximum size of POST data that PHP will accept.
post_max_size = 8M
; Maximum allowed size for uploaded files.
upload_max_filesize = 4M

upload_max_filesizeがフォームで送信できる最大容量

PHP 4.2.3までは

ini_set("upload_max_filesize","10M");

これで変更できてましたが、PHP_INI_PERDIRに変わったためphp.ini、httpd.conf、.htaccessでの変更となります。

一般に
upload_max_filesize < post_max_size < memory_limit
です。

マニュアルのpost_max_sizeに次のようにあります。
configureスクリプトでメモリ制限を有効とした場合、memory_limitも ファイルアップロードに影響します。
一般的に memory_limit は、post_max_sizeよりも大きくする必要があります。

.htaccessでこの設定を変更するには次のようにします。

php_value post_max_size 10M
php_value upload_max_filesize 8M
php_value memory_limit 20M

ちなみにphp.ini、httpd.confで、file_uploadsがOnになっていないとファイルはそもそもアップロードできません。

php_value file_uploads On

またpost_max_sizeの制限を越えると、ページによっては何も表示されないか、単なるGETアクセスと同じ扱いになります。

HTMLのformタグでもファイルサイズの制限はできますが、これは容易に改ざんできるためサーバ側でのチェックは必要です。
またファイルをアップロードするには、formタグに enctype="multipart/form-data"をつける必要があります。

<form name="【フォーム名】" action="【処理PHPファイル名】" method="post" enctype="multipart/form-data">
<input type="hidden" name="MAX_FILE_SIZE" value="50000">
<input type="file" name="userfile">
……………
………
……………
<input type="submit" name="submit" value="送信"> 
</form>

関連記事

スポンサーリンク

フロートを含むボックスのマージンが無視される

ホームページ製作・web系アプリ系の製作案件募集中です。

上に戻る