Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Docker: PhpMyAdmin has an upload limit of 2048KiB

i have a docker-compose.yml that looks like this:

webserver:
  build: ./_docker/php
  ports:
    - 80:80
  links:
    - mysql
  volumes_from:
    - app

mysql:
  image: mysql:5.7
  environment:
    MYSQL_DATABASE: "${DB_NAME}"
    MYSQL_USER: "${DB_USER}"
    MYSQL_ROOT_PASSWORD: "${DB_ROOT_PW}"
    MYSQL_PASSWORD: "${DB_PW}"
  volumes:
    - ./_docker/data/db:/docker-entrypoint-initdb.d
  volumes_from:
    - data

data:
  image: mysql:5.7
  volumes:
    - /var/lib/mysql
  command: "true"

phpmyadmin:
  image: phpmyadmin/phpmyadmin
  ports:
    - 8080:80
  links:
    - mysql
  environment:
    PMA_HOST: mysql

app:
  image: tianon/true
  volumes:
    - .:/var/www/public_html

Dockerfile looks like this:

FROM php:7.0-apache
#php:7.2.2-apache
#php:5.6.33-apache

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

COPY 000-default.conf /etc/apache2/sites-available/

RUN a2enmod rewrite
RUN a2enmod expires
RUN a2enmod headers

RUN apt-get update
RUN apt-get install -y zlib1g-dev libxml2-dev libfreetype6-dev libjpeg62-turbo-dev libmcrypt-dev libpng12.0 imagemagick
RUN docker-php-ext-install mysqli zip soap
RUN docker-php-ext-configure gd --with-freetype-dir=/usr/include/ --with-jpeg-dir=/usr/include/
RUN docker-php-ext-install gd

# Install opcache
RUN docker-php-ext-install opcache

and the php ini like this:

max_input_vars = 1500
max_execution_time = 300
post_max_size=50M
upload_max_filesize=50M

when i start the container i have my webserver located on http://localhost.

i put an index.php with a phpinfo(); inside it and it shows, that the php.ini works.

When i open http://localhost:8080 and login to PMA it shows me that my upload limit i set to 2048KiB.

Where can i change this?

Thanks in advance!

like image 613
lvollmer Avatar asked Nov 14 '19 23:11

lvollmer


5 Answers

Use like this UPLOAD_LIMIT env in docker. This is from my docker-compose.yml. Default value for UPLOAD_LIMIT is 2048K which is 2048KiB. Setting value to 300M increases it to 300MiB.

Reference: https://github.com/phpmyadmin/docker#environment-variables-summary

 phpmyadmin:
    image: phpmyadmin/phpmyadmin
    container_name: 'php7.3-phpmyadmin'
    restart: 'always'
    links:
      - mysql
    environment:
      PMA_HOST: mysql
      PMA_PORT: 3306
      UPLOAD_LIMIT: 300M
    ports:
      - '8082:80'
    volumes:
      - /sessions
like image 144
Abhishek Jangid Avatar answered Nov 12 '22 22:11

Abhishek Jangid


I implemented UPLOAD_LIMIT ENV variable in

https://github.com/phpmyadmin/docker/pull/261/files#diff-80edf79b0f382a3c6e871ac209ffd6abR57

like image 8
William Desportes Avatar answered Nov 12 '22 21:11

William Desportes


you need to use UPLOAD_LIMIT inside enviroment, and you need to specify values with = sign, like example: UPLOAD_LIMIT=300M

version: '3.1'
services:
  db:
    image: mysql
    command: --default-authentication-plugin=mysql_native_password
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: somerandompasswordgenerated
    ports:
      - 3306:3306

  phpmyadmin:
    image: phpmyadmin
    restart: always
    ports:
      - 8080:80
    environment:
      - PMA_ARBITRARY=1
      - UPLOAD_LIMIT=300M
like image 8
Felipe Illanes Avatar answered Nov 12 '22 21:11

Felipe Illanes


In my case I couldn't fix it with UPLOAD_LIMIT, so without further debugging I needed a quick solution even if it's temporary:

  1. open phpmyadmin container terminal: docker exec -it container_name bash

  2. If you don't have vim or nano editor install one: apt-get update, apt-get install vim

  3. create config file: vi /usr/local/php/conf.d/myconf.ini
  4. with this content: post_max_size=50M upload_max_filesize=50M

  5. restart container

Remember these changes will be gone when container is recreated, it's just a temporary solution. Try working with UPLOAD_LIMIT as suggested in previous answer.

UPDATE Tried again with setting upload_limit environment, but still without luck, so found another solution: created a file say uploads.ini with this content:

post_max_size=50M 
upload_max_filesize=50M

and link it to container volume :

  phpmyadmin:
    image: phpmyadmin/phpmyadmin
    links: 
      - mysql:db
    ports:
      - 8084:80
    volumes:
      - ./uploads.ini:/usr/local/etc/php/conf.d/php-phpmyadmin.ini
    environment:
      MYSQL_ROOT_PASSWORD: something
      #UPLOAD_LIMIT: 3000000000 <-- didn't work
like image 3
temirbek Avatar answered Nov 12 '22 22:11

temirbek


the following worked very well. My docker-compose.yml contains this:

  phpmyadmin:
    image: phpmyadmin/phpmyadmin
    container_name: some-name
    env_file:
      - phpmyadmin.env
    depends_on:
      - mariadb
    volumes:

The following entry was added to the phpmyadmin.env: UPLOAD_LIMIT=256MB The larger number (Maximal: 256MiB) showed up right after the container was brought down and was back up again.

like image 3
Ulrich von Homeyer Avatar answered Nov 12 '22 22:11

Ulrich von Homeyer