DockerでPHPをインストールした時、PHPのファイルアップロード上限サイズは、特に指定しなければ2MB
に設定されます。
いくつかの方法で上限サイズを引き上げることができます。
例として500MB
まで上げる方法を紹介します。
Dockerfileで設定する
イメージ作成時にDockerfileに下記のように書き加えることで、ファイル上限を上げることができます。
RUN echo "file_uploads = On\n" \ "memory_limit = 500M\n" \ "upload_max_filesize = 500M\n" \ "post_max_size = 500M\n" \ "max_execution_time = 600\n" \ > /usr/local/etc/php/conf.d/uploads.ini
※ /usr/local/etc/php/conf.d
に置かれたini
ファイルはphp.ini
に書かれたのと同じ扱いになります。
.htaccessファイルで設定する
ディレクトリに.htaccessファイルを設置すると、設置されたディレクトリとそのサブディレクトリに記述された内容が適用されます。
コンテナを作るたびに.htaccessを設定する必要があります。
php_value memory_limit 500M php_value upload_max_filesize 500M php_value post_max_size 500M php_value max_execution_time 600
php.iniを編集する
/usr/local/etc/php/php.ini
のファイルを直接編集して、サーバーを再起動します。
コンテナを作るたびに php.ini を設定する必要があります。
memory_limit = 500M upload_max_filesize = 500M post_max_size = 500M max_execution_time = 600
(追記)
とはいえphp.iniを直接編集するのはお勧めできません。
/usr/local/etc/php/conf.d
内に適当な名前のiniファイルを作れば、php.ini に書き加えたのと同じ扱いになります。
スクリプト内でini_set()を使う
upload_max_filesizeという項目はini_set()では変更できませんでした。
PHPのスクリプト内で ini_set() 関数を使って上書きします。
コンテナを作るたびにスクリプト内で ini_set() 関数を設定する必要があります。
設定値の意味
設定 | 役割 | 初期値 |
---|---|---|
file_uploads | HTTP ファイルアップロード を有効とするかどうか | 1 |
memory_limit | 一回のリクエストに使用できるメモリの上限 | 128M |
upload_max_filesize | アップロードされるファイルの最大サイズ | 2M |
post_max_size | POSTデータに許可される最大サイズ | 8M |
max_execution_time | スクリプトがパーサにより強制終了されるまでに許容される最大の 時間を秒単位で指定します | 30 |