web-dev-qa-db-fra.com

Activer la journalisation des erreurs sur PHP-FPM 7 avec Nginx?

C'est essentiellement la même chose que ces questions:

https://stackoverflow.com/questions/8677493/php-fpm-doesnt-write-to-error-log

Nginx ne se connecte pas PHP

[~ # ~] mais [~ # ~] les réponses ne semblent pas fonctionner sur Ubuntu 16.04 avec PHP 7.

/etc/php/7.0/fpm/pool.d/www.conf :

catch_workers_output = yes
php_flag[display_errors] = on
php_admin_value[error_log] = /var/log/fpm-php.www.log
php_admin_flag[log_errors] = on

/var/log/fpm-php.www.log existe et appartient à www-data.

/etc/php/7.0/fpm/php.ini :

log_errors = On

Bloc serveur de l'hôte virtuel Nginx

access_log /var/log/myapp/access.log;
error_log /var/log/myapp/error.log error;

/var/log/myapp/access.log existe et appartient à www-data.

Mais lorsqu'une erreur se produit, je ne reçois aucune erreur dans aucun des fichiers journaux spécifiés et je ne le trouve pas ailleurs non plus.

J'ai parcouru toutes les suggestions sur l'autre question, mais je n'ai trouvé aucune réponse qui fonctionnait. Je suppose que quelque chose a changé depuis que ces réponses ont été publiées. Aucune suggestion?

6
Nick

Le commentaire ci-dessus par the_nuts a aidé à le résoudre pour moi. Le répertoire et le fichier n'existaient pas.

Pour diagnostiquer, j'ai ajouté:

print("\n\n<br><br>log_errors: ".ini_get('log_errors'));
print("\n\n<br><br>error_log: ".ini_get('error_log'));

en haut de mon code (un WordPress). Cela a généré:

log_errors: 1
error_log: /usr/local/etc/php-fpm.d/fpm.log 

Dans le terminal, j'ai utilisé ls pour apprendre que le fichier et le répertoire étaient manquants, c'est-à-dire.

ls /usr/local/etc/php-fpm.d/fpm.log
ls /usr/local/etc/php-fpm.d/

sortie

ls: cannot access '/usr/local/etc/php-fpm.d/fpm.log': No such file or directory
ls: cannot access '/usr/local/etc/php-fpm.d': No such file or directory

Pour corriger: j'ai changé le répertoire en /usr/local/etc, créé le répertoire, le fichier, puis défini le propriétaire sur www- data: www-data

cd /usr/local/etc
Sudo mkdir php-fpm.d
cd php-fpm.d
Sudo touch fpm.log
Sudo chown -R www-data:www-data fpm.log

Si le fichier et le répertoire existent, exécutez

ls fpm.log -l

et si le propriétaire est root:

-rw-r--r-- 1 root root 0 Jun 23 19:52 fpm.log

courir

Sudo chown -R www-data:www-data fpm.log

pour donner au serveur Web la propriété et l'accès en écriture

-rw-r--r-- 1 www-data www-data 12848 Jun 23 20:07 fpm.log
3
BrianHenryIE