102 lines
2.6 KiB
Markdown
102 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 les **error_log** de PHP dans **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
|
|
```
|