Docker phpmyadmin无视我的php.ini配置

时间:2018-05-31 09:28:17

标签: php docker phpmyadmin docker-compose

我用apache,php7.0,mysql建立了一个docker-compose环境,并且还添加了phpmyadmin。

我尝试了很多次来包含我自己的php.ini文件,最后,我得到php接受它,因为它在我的index.php中加载了phpinfo()。

我需要加载一个重量超过750Mb的数据库,而我的phpmyadmin不允许我导入大于512Mb的数据库。

我试图将数据库压缩到60Mb,但是当我尝试导入它时,它需要很长时间并最终削减导入,因为它花了这么长时间,让我的数据库不完整。

即使设置我的php.ini file_size限制以及所有这些,phpmyadmin也会忽略它。

这是我在php.ini中所做的改变:

upload_max_filesize = 1024M
post_max_size = 1024M
memory_limit = 1024M
max_execution_time = 300

我的docker-compose.yml是:

version: '3.3'

services:
  php:
    build: apache-php
    ports:
      - "80:80"
      - "443:443"
    volumes:
      - ./apache-php/www:/var/www/html
    links:
      - mysql
      - phpmyadmin

  mysql:
    image: mysql:5.7
    volumes:
     - ./mysql:/var/lib/mysql
    environment:
     - MYSQL_ROOT_PASSWORD=1347891743
     - MYSQL_DATABASE=database

  phpmyadmin:
    image: phpmyadmin/phpmyadmin
    links:
      - mysql
    environment:
      PMA_HOST: mysql
      PMA_PORT: 3306
    ports:
      - "8080:80"
    volumes:
      - ./mysql:/var/lib/mysql

我还有一个Dockerfile来运行我的php:

FROM php:7.0-apache

RUN docker-php-ext-install mysqli


COPY config/php.ini /usr/local/etc/php/

这是它在phpmyadmin中显示的内容。

Phpmyadmin file size limit

非常感谢一点帮助

5 个答案:

答案 0 :(得分:1)

您可以尝试:

php.ini的phpmyadmin容器中配置/usr/local/etc/php/

这是.yml

phpmyadmin:
    volumes:
        - ./php-make/upload.ini:/usr/local/etc/php/php.ini

和文件upload.ini

upload_max_filesize = 1280M
post_max_size = 1280M

根据需要更改任意点

我能做并成功phpmyadmin

答案 1 :(得分:0)

根据我的经验,PhpMyAdmin不是导入大型数据库的最佳方式。 因此,即使您设法增加memory_limit,您仍然会遇到很长的处理时间。

最好提供init脚本并通过docker-compose将其链接到 /docker-entrypoint-initdb.d 文件夹。例如:

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<img id="face" src="https://take-a-screenshot.org/secondary/img/about/face.jpg" style="display:none; position: absolute">
<img src="https://take-a-screenshot.org/secondary/img/about/blur.jpg">

here您可能会看到它扫描 /docker-entrypoint-initdb.d 文件夹中的可变文件(包括* .sql)并对其进行处理。所以只需将您的SQL转储文件放在链接的卷中即可完成。

如果您仍需要增加php memory_limit,那么可能您可以使用/etc/phpmyadmin/config.user.inc.php设置PMA特定设置。 PMA docsPMA docker image readme中的详细信息。

答案 2 :(得分:0)

尝试一下: 访问您的phpmyadmin docker容器:     docker exec -it [容器名称或为bash]

在/ usr / local / etc / php中创建一个php.ini:

 nano /usr/local/etc/php/php.ini

(nano或vi,取决于您喜欢的编辑器)

添加所需的行,例如:

file_uploads = On
memory_limit = 6G
upload_max_filesize = 6G
post_max_size = 6G
max_execution_time = 6000

然后重新加载:服务apache2重新加载

对我有用!

答案 3 :(得分:0)

您可以在 docker 容器中配置文件“phpmyadmin-misc.ini”

  1. 检查合并目录。
  • docker inspect phpmyadmin

    "MergedDir": "/var/lib/docker/overlay2/e703e63ddf58c0decebd292eabaf8fe2c7eef49eafa390d7f7cc971f523fb0a8/merged",

  1. 编辑文件

    • cd var/lib/docker/overlay2/e703e63ddf58c0decebd292eabaf8fe2c7eef49eafa390d7f7cc971f523fb0a8/merged
    • vi usr/local/etc/php/conf.d/phpmyadmin-misc.ini

添加 2 行

upload_max_filesize = 1024M
post_max_size = 1024M
  1. 重启 Docker 容器
  • docker restart phpmyadmin

答案 4 :(得分:0)

最简单的方法是使用环境变量。

在 phpmyadmin 容器内,如果您检查 php conf 文件,您可以看到文件 /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-composer.yml成为

version: '3.3'

services:
  php:
    build: apache-php
    ports:
      - "80:80"
      - "443:443"
    volumes:
      - ./apache-php/www:/var/www/html
    links:
      - mysql
      - phpmyadmin

  mysql:
    image: mysql:5.7
    volumes:
     - ./mysql:/var/lib/mysql
    environment:
     - MYSQL_ROOT_PASSWORD=1347891743
     - MYSQL_DATABASE=database

  phpmyadmin:
    image: phpmyadmin/phpmyadmin
    links:
      - mysql
    environment:
      - PMA_HOST=mysql
      - PMA_PORT=3306
      - UPLOAD_LIMIT=1024M
      - MEMORY_LIMIT=1024M
      - MAX_EXECUTION_TIME=300
    ports:
      - "8080:80"
    volumes:
      - ./mysql:/var/lib/mysql

与运行 docker 命令相同:

docker run -e VARIABLE=VALUE ...