En utilisant les conteneurs Apache + php-fpm dans docker-compose, je ne peux pas obtenir le conteneur php-fpm pour afficher des erreurs.
docker-compose.yml
version: '3'
services:
php:
build:
context: ./php
ports:
- 9000:9000
volumes:
- ./code:/code
- ./php/www.conf:/usr/local/etc/php-fpm.d/www.conf
environment:
ENVIRONMENT: local
web:
image: httpd:2.4
depends_on:
- php
ports:
- 80:80
volumes:
- ./code:/usr/local/Apache2/htdocs
- ./web/httpd.conf:/usr/local/Apache2/conf/httpd.conf
depends_on:
- php
php-fpm Dockerfile:
FROM php:5.6-fpm
php-fpm www.conf:
[global]
error_log = /proc/self/fd/2
[www]
user = www-data
group = www-data
listen = nginx:9000
pm = dynamic
pm.max_children = 5
pm.start_servers = 2
pm.min_spare_servers = 1
pm.max_spare_servers = 3
; Logging
; if we send this to /proc/self/fd/1, it never appears
access.log = /proc/self/fd/2
clear_env = no
; Ensure worker stdout and stderr are sent to the main error log.
catch_workers_output = yes
php_flag[display_errors] = on
php_admin_flag[log_errors] = on
;php_admin_value[error_log] = /var/log/fpm-php.www.log
php_admin_value[error_reporting] = E_ALL & ~E_NOTICE & ~E_WARNING & ~E_STRICT & ~E_DEPRECATED
php_admin_value[display_startup_errors] = on
docker-compose logs affiche uniquement les journaux d'accès php-fpm, pas de journaux d'erreurs.
J'ai essayé toutes les solutions proposées dans le post proposé comme doublon possible: PHP-FPM n'écrit pas dans le journal des erreurs Aucune d'entre elles n'a fonctionné pour moi, consultez mes commentaires ci-dessous.
Des heures de lutte pour que cela fonctionne.
Dans le fichier docker-compose.yml
J'ai monté mes journaux (donc ils persistent)
volumes:
- ./phpSettings.conf:/usr/local/etc/php-fpm.d/zzz-phpSettings.conf
- ./logs/php-error.log:/var/log/error.log
- ./logs/php-access.log:/var/log/access.log
Dans le phpSettings.conf
fichier J'ai ceci:
[www]
user = www-data
group = www-data
listen = 0.0.0.0:9000
pm = dynamic
pm.max_children = 5
pm.start_servers = 2
pm.min_spare_servers = 1
pm.max_spare_servers = 3
catch_workers_output = yes
php_admin_flag[log_errors] = on
php_admin_flag[display_errors] = off
php_admin_value[error_reporting] = E_ALL & ~E_NOTICE & ~E_WARNING & ~E_STRICT & ~E_DEPRECATED
php_admin_value[error_log] = /var/log/error.log
access.log = /var/log/access.log
php_value[memory_limit] = 512M
php_value[post_max_size] = 24M
php_value[upload_max_filesize] = 24M
Assurez-vous que les fichiers journaux montés existent avant de démarrer le docker.
l'astuce semble nommer mes paramètres zzz-phpSettings.conf
est donc le dernier à charger. J'écrase les paramètres www.conf de l'image php docker par défaut avec les mêmes paramètres (sauf l'écoute 0.0.0.0:9000).
Dans cette configuration php-fpm + Nginx, j'ai réussi à avoir des journaux nginx (erreur/accès) à son propre emplacement + journaux d'erreur php-fpm/accès à son propre emplacement aussi, donc loggins est vraiment sympa.