Cara mengkonfigurasi PHP-FPM melalui NGINX untuk menulis dalam file log per-virtualhost

11

Saya punya Fedora 16 dengan Nginx dan PHP-FPM. Semuanya bekerja dengan sangat baik. Semua log dengan pemberitahuan PHP, peringatan, kesalahan dll ada di /var/log/php-fpm/www-error.log.

Apakah ada cara untuk mengkonfigurasi PHP-FPM untuk menulis kesalahan dalam file log yang tepat yang dikonfigurasi sebagai log kesalahan untuk Nginx? Jadi saya ingin mencatat kesalahan PHP per-virtualhost dan tidak dalam satu file global. (seperti di Apache Httpd dan PHP).

B14D3
sumber

Jawaban:

14

Arahan PHP-FPM: catch_workers_output = yes akan menyebabkan kesalahan PHP mengirimkan ke stdout / stderr untuk dikirim kembali ke nginx, dan itu akan dicatat.

Dalam PHP 5.2.4 dan yang lebih baru, direktif display_errors bukan lagi boolean, tetapi akan menerima 'stderr' sebagai opsi. Ini harus menyebabkan semua kesalahan untuk kembali ke nginx, dan dicatat per vhost.

Jadi dalam konfigurasi PHP-FPM Anda:

php_admin_value[display_errors] = 'stderr'

Opsi Anda yang lain adalah arahan:

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

yang mungkin Anda gunakan sekarang. php-fpm.conf mendukung beberapa variabel, seperti $ pool (yang bagi Anda, kemungkinan akan mengembalikan 'www').

Jika Anda memiliki lebih dari 1 kumpulan, Anda dapat dengan mudah mencatatnya secara terpisah.

Dari penelusuran cepat melalui kode sumber, sepertinya $ pool adalah satu-satunya variabel tersebut.

Allan Jude
sumber
1
Hmm, sepertinya ada beberapa masalah dengandisplay_errors="stderr" . Sudahkah Anda mengujinya untuk bekerja?
Pacerier