Files
wiki/docs/PHP/logs.md
Ludovic Cartier df83c58104
All checks were successful
mkdocs build / build (push) Successful in 5s
mkdocs build / notification (push) Successful in 2s
php logs - fixes
2025-09-09 18:03:48 +02:00

103 lines
2.6 KiB
Markdown

categories: php
title: Gestion des logs d'erreurs PHP-FPM pour les versions >= 8
Sur les versions supérieures à 8 de PHP-FPM, l'enregistrement des logs d'erreurs via FPM ne fonctionne pas "out of the box".
Pour faire fonctionner l'enregistrement des logs d'erreur, il y a deux solutions :
#### 1/ via PHP-FPM
Dans la configuration du pool FPM :
```bash
user = foo
group = bar
php_admin_value[error_log] = /var/log/php/XXX/php-errors.log
php_admin_value[error_reporting] = E_ALL & ~E_NOTICE
```
Attention ! Le répertoire cible doit appartenir à l'utilisateur propriétaire du pool FPM.
Résultat:
```bash
# ls -la /var/log/php/XXX/
total 6468
drwxr-xr-x 2 foo bar 4096 Sep 9 17:17 .
drwxr-xr-x 4 root root 4096 Apr 6 2023 ..
-rw-r----- 1 foo bar 0 Sep 9 17:17 php-errors.log
-rw------- 1 foo bar 0 Sep 9 14:44 php-slow.log
```
#### 2/ via rsyslog
Dans la configuration du pool FPM, il faut indiquer l'utilisation de **syslog** et de son identifiant :
```bash
user = foo
group = bar
php_admin_value[error_log] = syslog
php_admin_value[error_reporting] = E_ALL & ~E_NOTICE
php_admin_value[syslog.ident] = "pool_XXX"
```
Et dans rsyslog :
```bash
# cat /etc/rsyslog.d/10-php
$FileCreateMode 0644
$Template php_pool_log,"/var/log/php/%syslogtag:R,ERE,2,DFLT:pool(_)(.*):--end%/php-errors.log"
:syslogtag, startswith, "pool" ?php_pool_log
:syslogtag, startswith, "pool" stop
```
Explications:
1. on configure le **error_log** du pool FPM sur **syslog**
2. on spécifique le **syslog_ident** du pool FPM
3. on configure rsyslog pour "fetcher" l'identifiant précédant, et écrire les données du buffer dans **/var/log/php/<IDENTIFIANT>/php-errors.log**
Comme résultat:
```bash
# ls -la /var/log/php/XXX/
total 6468
drwxr-xr-x 2 root adm 4096 Sep 9 17:17 .
drwxr-xr-x 4 root root 4096 Apr 6 2023 ..
-rw-r----- 1 root adm 0 Sep 9 17:17 php-errors.log
-rw------- 1 root adm 0 Sep 9 14:44 php-slow.log
```
#### Rotation des logs !
Bien entendu, il faut penser à mettre en place une rotation de ces nouveaux logs:
```bash
$ cat /etc/logrotate.d/php
daily
rotate 8
compress
compresscmd /bin/bzip2
uncompresscmd /bin/bunzip2
compressoptions -9
compressext .bz2
missingok
dateext
dateformat -%Y%m%d-%s
dateyesterday
notifempty
sharedscripts
create 644 root adm
/var/log/php/php-errors.log
/var/log/php/*/php-errors.log
/var/log/php/*/php-slow.log
{
postrotate
if [ -d /run/systemd/system ]; then systemctl kill -s HUP rsyslog.service; else invoke-rc.d rsyslog rotate > /dev/null; fi
end
```