Custom PHP.ini settings for docker - upload limits, timezone etc

A good way to change settings in php.ini.

Find out where the php is looking for ini files

Login to your container

sudo docker exec -it CONTAINER_NAME sh

inside docker shell

php --ini

My output:

~ $  php --ini
Configuration File (php.ini) Path: /usr/local/etc/php
Loaded Configuration File:         /usr/local/etc/php/php.ini
Scan for additional .ini files in: /usr/local/etc/php/conf.d
Additional .ini files parsed:      /usr/local/etc/php/conf.d/docker-fpm.ini,
/usr/local/etc/php/conf.d/docker-php-ext-bcmath.ini,
/usr/local/etc/php/conf.d/docker-php-ext-exif.ini,
/usr/local/etc/php/conf.d/docker-php-ext-gd.ini,
/usr/local/etc/php/conf.d/docker-php-ext-gmp.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-pdo_mysql.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/in-php.ini

Now we know where additional .ini files should be placed:

Scan for additional .ini files in: /usr/local/etc/php/conf.d
Additional .ini files parsed:      /usr/local/etc/php/conf.d/docker-fpm.ini,

Create your custom ini file, I’ve named mine .Inv_NNJ_php.ini and placed in the same directory as docker-compose.yml

In docker-compose.yml - add your file to volumes. Naming important - you want this file to be parsed the last. So add something that will put it in the end of the list - I’ve added “zz”.
format WHAT:WHERE

    volumes:
      - docker/.Inv_NNJ_php.ini:/usr/local/etc/php/conf.d/zz_inv_nnj_custom_php.ini

Run compose to add the file

docker-compose up -d

After container was recreated, log into it to verify that custom INI was picked up:

sudo docker exec -it CONTAINER_NAME sh

Now you can check if it was picked up by php - in my case - success, file is in the list at last position.

~ $ php --ini
Configuration File (php.ini) Path: /usr/local/etc/php
Loaded Configuration File:         /usr/local/etc/php/php.ini
Scan for additional .ini files in: /usr/local/etc/php/conf.d
Additional .ini files parsed:      /usr/local/etc/php/conf.d/docker-fpm.ini,
/usr/local/etc/php/conf.d/docker-php-ext-bcmath.ini,
/usr/local/etc/php/conf.d/docker-php-ext-exif.ini,
/usr/local/etc/php/conf.d/docker-php-ext-gd.ini,
/usr/local/etc/php/conf.d/docker-php-ext-gmp.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-pdo_mysql.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/in-php.ini,
/usr/local/etc/php/conf.d/zz_inv_nnj_custom_php.ini

Hi,

Thanks for sharing, this is very helpful!