nginx / php-fpm hata günlüğü


16

PHP hataları benim kurulum gidiyor nereye anlamaya çalışıyorum. PHP-FPM için ters proxy olarak nginx çalıştırıyorum, ama benim app üreten çeşitli E_NOTICE veya E_WARNING mesajları görmüyorum . Gerçekleştiklerini bilmemin tek nedeni başarısız yanıtlar ve NewRelic alıcı yığın izleridir.

Günlüğe kaydetme yapılandırması:

nginx.conf

proxy_intercept_errors on;
fastcgi_intercept_errors on;

php.ini

error_reporting  =  E_ALL
display_errors = Off
display_startup_errors = Off
log_errors = On
log_errors_max_len = 1024
ignore_repeated_errors = Off
ignore_repeated_source = Off
report_memleaks = On
track_errors = On
error_log = syslog

php-fpm.conf

[global]
error_log = /var/log/php-fpm/fpm-error.log

[www]
access.log = /var/log/php-fpm/access.log
access.format = "%t \"%m %r%Q%q\" %s %{mili}dms %{kilo}Mkb %C%%"
catch_workers_output = yes

php_flag[display_errors] = on
php_admin_flag[log_errors] = true

rsyslog.conf

:syslogtag, contains, "php" /var/log/php-fpm/error.log

PHP syslog günlüğe kaydetmek için yapılandırdım, ancak FPM hiçbir syslog işlevi vardır, bu yüzden bir dosyaya giriş. Hataların nerede bittiği umurumda değil, sadece bir yerde bitiyor.

Bunu nasıl çalıştırabileceğime dair herhangi bir ipucu var mı?


Önce hataları görüntülemek (bir test.php dosyasında elle bir hata tetikleyebilir), sonra bir dosyaya koymak vb. Tetiklenen hatalar cli olabilir, bu yüzden farklı bir php.ini kullanarak
adrian7

Bunu denedin mi? php_admin_value [hata_log] = /var/log/php-fpm/www-error.log php_admin_flag [log_errors] = açık
Ghasem Pahlavan 17:15

Yanıtlar:


5

Yapılandırma dosyası FPM göre syslog hata gönderme destekler.

; Error log file
; If it's set to "syslog", log is sent to syslogd instead of being written
; in a local file.
; Note: the default prefix is /var
; Default Value: log/php-fpm.log
error_log = syslog

; syslog_facility is used to specify what type of program is logging the
; message. This lets syslogd specify that messages from different facilities
; will be handled differently.
; See syslog(3) for possible values (ex daemon equiv LOG_DAEMON)
; Default Value: daemon
;syslog.facility = daemon

; syslog_ident is prepended to every message. If you have multiple FPM
; instances running on the same server, you can change the default value
; which must suit common needs.
; Default Value: php-fpm
;syslog.ident = php-fpm

; Log level
; Possible Values: alert, error, warning, notice, debug
; Default Value: notice
;log_level = notice

1

Rsyslog.conf için varsayımınızdan emin misiniz? Yani, tüm bu syslog mesajları küçük harf "php" ile etiketlendiğinden emin misiniz?

Syslog.facility öğesini local2 (veya local1 veya local7) gibi bir şeye ayarlamayı ve rsyslog.conf yapılandırma satırınızı uygun şekilde değiştirmeyi deneyin:

local2.* /var/log/php-fpm/error.log

1

Php-fpm kullanırken php.iniayarları geçersiz kılıyor gibi görünüyor .

Günlüğe kaydetme büyük olasılıkla yapılandırılmalıdır .../www.conf.

Ben PHP günlükleri kapmak için bu satırları uncommented.

php_admin_value[error_log] = /var/log/php-errors.log
php_admin_flag[log_errors] = on

Web sunucusu kullanıcısı ve grubu da bu dosyada buna benzer satırlar altında bulunabilir (unix soketi ve proxy yapılandırması arasında farklılık gösterebilir).

listen.owner = www-data
listen.group = www-data

O zaman bu sadece dosyayı oluşturmak ve düzgün yapılandırmakla ilgilidir.

touch /var/log/php-errors.log
chmod 644 /var/log/php-errors.log
chgrp www-data /var/log/php-errors.log
chown www-data /var/log/php-errors.log

Günlük düzeyinin hala kullanıldığını düşünüyorum, php-fpm.confbu yüzden bunu da kontrol etmeniz gerekebilir.

log_level = error
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.