😊

Dockerのphpmyadminのアップロードサイズをあげた

2024/07/18に公開

はじめに

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」で定義されていました。

/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に環境変数の設定を追加

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
%

変更が適用されました。

参考文献

https://www.php.net/manual/ja/ini.core.php

Discussion