Comment configurer PHP-FPM sur NGINX pour écrire dans des fichiers journaux par hôte virtuel

11

J'ai Fedora 16 avec Nginx et PHP-FPM. Tout fonctionne très bien. Tous les journaux avec des avis PHP, des avertissements, des erreurs, etc. sont dans /var/log/php-fpm/www-error.log.

Existe-t-il un moyen de configurer PHP-FPM pour écrire des erreurs dans des fichiers journaux appropriés configurés en tant que journaux d'erreurs pour Nginx? Je souhaite donc enregistrer les erreurs PHP par hôte virtuel et non dans un fichier global. (comme dans Apache Httpd et PHP).

B14D3
la source

Réponses:

14

La directive PHP-FPM: catch_workers_output = yes entraînera les erreurs que PHP envoie à stdout / stderr pour être renvoyées à nginx, et elles seront enregistrées.

En PHP 5.2.4 et plus récent, la directive display_errors n'est plus un booléen, mais acceptera 'stderr' en option. Cela devrait entraîner le retour de toutes les erreurs à nginx et être enregistré par vhost.

Donc dans votre configuration PHP-FPM:

php_admin_value[display_errors] = 'stderr'

Votre autre option est la directive:

php_admin_value[error_log] = /var/log/fpm-php.www.log

c'est ce que vous utilisez probablement maintenant. le php-fpm.conf prend en charge certaines variables, comme $ pool (qui, pour vous, renverra probablement «www»).

Si vous avez plus d'un pool, vous pouvez facilement les enregistrer séparément.

À partir d'une navigation rapide dans le code source, il semble que $ pool soit la seule variable de ce type.

Allan Jude
la source
1
Hmm, il semble y avoir un problème avecdisplay_errors="stderr" . L'avez-vous testé pour fonctionner?
Pacerier