nginx / php-fpm ত্রুটি লগিং


16

আমি আমার সেটআপে পিএইচপি ত্রুটিগুলি কোথায় চলেছে তা জানার চেষ্টা করছি। আমি পিএইচপি- এফপিএমের বিপরীত প্রক্সি হিসাবে এনজিন্স চালাচ্ছি , তবে আমার অ্যাপ্লিকেশনটি যে বিভিন্ন E_NOTICE বা E_WARNING বার্তা তৈরি করছে তা দেখছি না । কেবলমাত্র আমি জানি যে তারা ঘটছে তা হ'ল ব্যর্থ প্রতিক্রিয়া এবং নিউরেলিক স্ট্যাক ট্রেসগুলি ধরা।

এখানে লগিং কনফিগারেশন:

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

পিএইচপি-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

আমি পিএইচপি কনফিগার করেছি সিসলোগে লগ করার জন্য, তবে এফপিএমের কোনও সিসলগ ফাংশন নেই তাই এটি কোনও ফাইলে লগইন করে। ত্রুটিগুলি কোথায় শেষ হয় তা আমি সত্যিই চিন্তা করি না, কেবল সেগুলি কোথাও শেষ হয়।

আমি কীভাবে এটি কাজ করতে পারি তার কোনও ক্লু?


আমি প্রথমে ত্রুটিগুলি প্রদর্শন করার চেষ্টা করব (একটি টেস্ট.পিএফপি ফাইলে আপনি ম্যানুয়ালি কোনও ত্রুটি ট্রিগার করতে পারেন), তারপরে এগুলি একটি ফাইলের মধ্যে রেখে দিন ইত্যাদি ...। ত্রুটিগুলি ট্রিগার হতে পারে
ক্লাইট

আপনি কি এই চেষ্টা করেছেন? পিএইচপি_এডমিন_ভ্যালু [ত্রুটি_লগ] = /var/log/php-fpm/www-error.log পিএইচপি_এডমিন_ফ্ল্যাগ [লগ_অরফেসস] = অন
গাশেম পাহলাওয়ান

উত্তর:


5

কনফিগার ফাইল অনুসারে এফপিএম সিলেগ-এ ত্রুটি প্রেরণকে সমর্থন করে।

; 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 এর জন্য অনুমান সম্পর্কে নিশ্চিত? এটি হ'ল আপনি কি নিশ্চিত যে এই জাতীয় সমস্ত স্যাসলগ বার্তা লোয়ার-কেস "পিএইচপি" দিয়ে ট্যাগ করা আছে?

স্থানীয় 2 (বা লোকাল 1, বা লোকাল 7) এর মতো কিছুতে syslog.factivity সেট করার চেষ্টা করুন এবং সেই অনুসারে আপনার rsyslog.conf কনফিগার-লাইনটি প্রতিস্থাপন করুন:

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

1

আপনি যখন পিএইচপি-এফপিএম ব্যবহার করছেন তখন php.iniসেটিংসকে ওভাররাইড করে প্রদর্শিত হবে ।

লগিং সম্ভবত কনফিগার করা প্রয়োজন .../www.conf

পিএইচপি লগগুলি দখল করার জন্য আমি এই লাইনগুলিকে অসম্পূর্ণ করেছি।

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

ওয়েবসভার ব্যবহারকারী এবং গোষ্ঠীটি এই জাতীয় লাইনে এই ফাইলটিতে পাওয়া যাবে (ইউনিক্স সকেট এবং প্রক্সি কনফিগারেশনের মধ্যে পৃথক হতে পারে)।

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

তারপরে এটি ফাইলটি তৈরি এবং এটি সঠিকভাবে কনফিগার করার বিষয়।

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

আমি বিশ্বাস করি লগ স্তরটি এখনও ব্যবহার করা হয়েছে php-fpm.confতাই আপনার এটিও পরীক্ষা করে নেওয়া দরকার।

log_level = error
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.