Dockerのphpmyadminのアップロードサイズをあげた
はじめに
Dockerでいれたphpmyadminでサイズの大きなファイルを
インポートしようとしたところ、次のエラーがでました。
アップロードのサイズ設定に問題があるようです。
このままだとインポートができないので対応します。
変更する値
upload_max_filesize
https://www.php.net/manual/ja/ini.core.php#ini.upload-max-filesize
アップロードされるファイルの最大サイズ。
post_max_size には、 この値より大きな値を指定しなければいけません。
intを使用する際、 その値はバイト単位で測られます。 この FAQ に記載された 短縮表記を使用することも可能です。
post_max_size
https://www.php.net/manual/ja/ini.core.php#ini.post-max-size
POSTデータに許可される最大サイズを設定します。
この設定は、ファイルアップロードにも影響します。
大きなファイルをアップロードするには、この値を upload_max_filesize より大きく設定する必要があります。
一般的に memory_limit は、 post_max_sizeよりも大きく する必要があります。
memory_limit
https://www.php.net/manual/ja/ini.core.php#ini.memory-limit
スクリプトが確保できる最大メモリをバイト数で指定します。
この命令は、正しく書かれていないスクリプトがサーバーのメモリを食いつぶすことを防止するのに役立ちます。
もし、使用可能メモリに制限を設けたくない場合は、ここに -1 を指定してください。
Dockerコンテナ上の設定ファイルの場所
これらの設定は「/usr/local/etc/php/conf.d/phpmyadmin-misc.ini」で定義されていました。
allow_url_fopen=Off
max_execution_time=${MAX_EXECUTION_TIME}
max_input_vars=10000
memory_limit=${MEMORY_LIMIT}
post_max_size=${UPLOAD_LIMIT}
upload_max_filesize=${UPLOAD_LIMIT}
date.timezone=${TZ}
session.save_path=${SESSION_SAVE_PATH}
これらの現在値を確認
確認したところ以下の通りとなっていました。
memory_limitについては変更なさそうです。
root@phpmyadmin:/usr/local/etc/php/conf.d# php -i | egrep "(upload_max_filesize|post_max_size|memory_limit)"
memory_limit => 512M => 512M
post_max_size => 2048K => 2048K
upload_max_filesize => 2048K => 2048K
root@phpmyadmin:/usr/local/etc/php/conf.d#
compose.ymlに環境変数の設定を追加
environment:
UPLOAD_LIMIT: 128M
Dockerコンテナ再作成
再起動でもよかったのですが再作成しました。
% docker-compose down
[+] Running 1/1
✔ Container phpmyadmin Removed 1.2s
% docker-compose up -d
[+] Running 1/1
✔ Container phpmyadmin Started 0.2s
%
変更が適用されました。
参考文献
Discussion