add php-fpm error logs
This commit is contained in:
101
docs/PHP/logs.md
Normal file
101
docs/PHP/logs.md
Normal file
@@ -0,0 +1,101 @@
|
||||
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
|
||||
```
|
Reference in New Issue
Block a user