1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

【phpmyadmin】「アップロードしようとしたファイルが大きすぎるようです」エラーが出た場合の原因と解決方法

Posted at

概要

  • Dockerコンテナで起動しているphpmyadminにSQLのZIPファイルをインポートしたら、以下のエラーが出てきました。
アップロードしようとしたファイルが大きすぎるようです。この制限に関する対策については ドキュメント をご覧ください。
  • このエラーは、アップロードしようとしたファイルが許容されたサイズを超えていることを意味しています。
  • 本記事では、このエラーの原因と解決方法を記載します。

環境

  • Docker
    • Client: Docker Engine - Community: 20.10.23
    • Server: Docker Desktop 4.13.1 (90346): 20.10.20
  • docker compose: 3.3
  • python:3.6
  • phpmyadmin: 5.2.0
  • (phpmyadmin)PHP: PHP 8.0.19 (cli)
  • (phpmyadmin)MySQL Community Server (GPL): 5.7.30
  • (phpmyadmin)Apache/2.4.53 (Debian)

原因の追求

  • phpmyadminはデフォルトでは2,048KがMAXになっています。今回アップロードしたファイルは5.9MBあったので、確かにオーバーしています。ということでググってみると、php.iniファイルを編集してあげれば良いという記事が多かったので実際やって見ました。
  • phpmyadminのdockerコンテナに入って、以下コマンドで読み込んでいるphp.iniを見てみます。すると以下のように設定されていました。あれ、(none)になってる!?
$ php --ini

Configuration File (php.ini) Path: /usr/local/etc/php
Loaded Configuration File:         (none)
Scan for additional .ini files in: /usr/local/etc/php/conf.d
Additional .ini files parsed:      /usr/local/etc/php/conf.d/000-xxx.ini,
/usr/local/etc/php/conf.d/docker-php-ext-bz2.ini,
/usr/local/etc/php/conf.d/docker-php-ext-gd.ini,
/usr/local/etc/php/conf.d/docker-php-ext-mysqli.ini,
/usr/local/etc/php/conf.d/docker-php-ext-opcache.ini,
/usr/local/etc/php/conf.d/docker-php-ext-sodium.ini,
/usr/local/etc/php/conf.d/docker-php-ext-zip.ini,
/usr/local/etc/php/conf.d/opcache-recommended.ini,
/usr/local/etc/php/conf.d/phpmyadmin-misc.ini,
/usr/local/etc/php/conf.d/session-strict.ini
  • ということで、php.ini/usr/local/etc/phpに新規作成し、以下の項目を変えて見ました。
upload_max_filesize = 200M
post_max_size = 200M
  • これで再起動!してみるものの、phpmyadminでの表示は2,048Kが最大サイズのまま変わりません。
  • nginxを使っているので、ウェブサーバーを再起動してみましたが、変わらず。
  • うーん、なんでだろう。ということで、違う方法はないか調べて見たところ、ありました。

解決方法

        environment:
          PMA_HOST: "mysql"
          PMA_PORT: 3306
          UPLOAD_LIMIT: 300M
  • これで再起動すると、、、phpmyadminの「アップロードファイル」の表示が変わりました!

image.png

  • 念の為、なんでphp.ini編集しても治らなかったのかなと思い、phpmyadmin-misc.iniを見てみる。
  • 以下のようにdocker-compose.ymlファイルで設定した環境変数はここで指定されています。
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}
  • もしかして、phpmyadmin-misc.iniphp.iniより優先されているのでは?と思います。
  • 一般的には、php.iniファイルで明示的に設定された値がphpmyadmin-misc.iniよりも優先されるらしいですが、Dockerコンテナ内でPHPが実行されるときは、環境変数でオーバーライドされた場合が優先されるのかもしれません。上記の参考記事で挙げたstackflowでも同じようなコメントがあるので、その可能性が高いような。確実な情報をお持ちの方がいたらぜひ教えてください。おそらく以下の要素によってphp.iniファイルとphpmyadmin-misc.iniどちらが優先されるか異なると思われます。
    • Docker、docker-composeのバージョン
    • PHP、phpMyAdminのバージョン
    • OS
  • ちなみに、直接docker-compose.ymlに書き込まなくとも、任意に設定した別ファイルをローカルに作成してマウントする、という方法もあります。
phpmyadmin:
 volumes: 
 - ./phpmyadmin-misc.ini:/usr/local/etc/php/conf.d/phpmyadmin-misc.ini
  • ということで、php.iniを編集しても変わらなかった、という方は、docker-compose.ymlから試して見てください。
1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?