【Docker】phpMyAdminでインポート時にファイルサイズでエラーが出る場合の対処方法

Docker

スポンサーリンク

DockerでphpMyadminでデータベースをインポートする際に以下のエラーが出ることがある。

Warning: POST Content-Length of 2510244 bytes exceeds the limit of 2097152 bytes in Unknown on line 0
phpMyAdmin - Error
Error during session start; please check your PHP and/or webserver log file and configure your PHP installation properly. Also ensure that cookies are enabled in your browser.

session_start(): Session cannot be started after headers have already been sent

Cannot modify header information - headers already sent

この場合の対処方法を紹介します。

原因

phpMyadminの最大アップロードサイズの設定が小さいことが原因

以下の画像のようにインポートする際のアップロードファイルは初期設定では"最長: 2,048KiB"となっている。
ちょっとしたWordPressのサイトのDBを丸ごとインポートするとあっという間にサイズオーバーになる。

対処方法

docker-compose.ymlのphpmyadminのenvironment(環境変数)に以下を加える。64Mの所は適宜変えてください。

UPLOAD_LIMIT=64M

サンプルとして修正後はこんな感じ(7行目の部分を追加)

  phpmyadmin:
    image: phpmyadmin/phpmyadmin
    environment:
      - PMA_HOST=sample
      - PMA_USER=root
      - PMA_PASSWORD=password
      - UPLOAD_LIMIT=64M
    ports:
      - 7777:80
    volumes:
      - pma-session-store:/sessions

これだけでファイルサイズのエラーは解消!

おまけ

その他にも以下の設定を変更できる。

UPLOAD_LIMIT=64M #アップロードするファイルサイズの上限
MEMORY_LIMIT=128M #使用するメモリの上限
MAX_EXECUTION_TIME=180 #実行時間の上限

さらにおまけ

phpmyadminの設定ファイルはコンテナ内の以下のファイルのパスにある。
ここに環境変数が用意されている。

/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}

Docker

Posted by ton