ওয়েবে আর কোনও ভাল ব্যাখ্যা খুঁজে পাচ্ছি না বলে আমি পিএইচপি-এফপিএম এবং এনজিএনএক্স-এ লগ ইন করার ক্ষেত্রে কিছুটা পরীক্ষা করছি। বেশিরভাগ গাইড বলেছিলেন যে আমি পিএইচপি 5-এফপিএম থেকে এনজিনেক্সে ত্রুটিগুলি পাঠাতে চাইলে আমার পরিবর্তন catch_workers_output
করা উচিত yes
। তবে, আমার পরীক্ষাগুলির সময় আমি দেখতে পেয়েছি যে catch_workers_output
সেট করার no
পরেও ত্রুটিগুলি এখনও এনগিনেক্স দ্বারা সঠিকভাবে লগ করা হচ্ছে।
এখানে আমার ভার্চুয়ালহোস্ট কনফিগারেশন:
server {
server_name domain.com;
return 301 http://www.domain.com$request_uri;
access_log off;
}
server {
listen 80;
listen [::]:80;
root /home/websites/domain.com;
index index.php index.html index.htm;
error_log /home/websites/logs/domain.com/error.log warn;
access_log /home/websites/logs/domain.com/access.log;
#switch on gzip
gzip on;
gzip_min_length 1100;
gzip_buffers 10 32k;
gzip_types text/plain application/x-javascript text/xml text/css;
gzip_vary on;
location / {
try_files $uri $uri/ /index.php?q=$uri&$args;
}
location ~* .(gif|jpg|jpeg|png|css|js|ico)$ {
expires 30d;
access_log off;
}
error_page 404 /404.html;
location ~ \.php$ {
fastcgi_split_path_info ^(.+\.php)(/.+)$;
# NOTE: You should have "cgi.fix_pathinfo = 0;" in php.ini
# With php5-cgi alone:
# With php5-fpm:
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
# deny access to .htaccess files, if Apache's document root
# concurs with nginx's one
location ~ /\.ht {
deny all;
}
}
আমার অনুসন্ধানগুলি এখানে:
Exp 1
poolconf:
; catch_workers_output = no (commented out)
php_admin_value[error_log] = /var/log/fpm-php.www.log
php_admin_flag[log_errors] = on
; php_flag[display_errors] = 0
result:
errors not shown in browser
error written in /var/log/fpm-php.www.log
error not written in virtualhost error-log in nginx
errors not displayed in stderr when running php5-fpm non-daemonized
Exp 2
poolconf:
catch_workers_output = yes
php_admin_value[error_log] = /var/log/fpm-php.www.log
php_admin_flag[log_errors] = on
php_flag[display_errors] = 0
results:
no error in browser
error written in /var/log/fpm-php.www.log
error not written to virtualhost error-log by nginx
errors not displayed in stderr when running php5-fpm non-daemonized
Exp 3
poolconf:
catch_workers_output = yes
; php_admin_value[error_log] = /var/log/fpm-php.www.log
; php_admin_flag[log_errors] = on
php_flag[display_errors] = 0
results:
no errors in browser
error NOT written in /var/log/fpm-php.www.log
error WRITTEN to virtualhost error-log by nginx
errors DISPLAYED in stderr when running php5-fpm non-daemonized
Exp 4
poolconf:
; catch_workers_output = no (commented out)
; php_admin_value[error_log] = /var/log/fpm-php.www.log
; php_admin_flag[log_errors] = on
php_flag[display_errors] = 0
results:
no errors in browser
error NOT written in /var/log/fpm-php.www.log
error WRITTEN to virtualhost error-log by nginx
errors NOT displayed in stderr when running php5-fpm non-daemonized
আমার প্রশ্ন হল catch_workers_output=no
পিএইচপি 5-এফপিএম পিএনএফপি-এফএমপি থেকে স্টাডার আউটপুট (কখন ) না থাকলেও কীভাবে এনগিনেক্সে ত্রুটি লগ প্রেরণ করে ? আমি এটি কোথাও নথিভুক্ত খুঁজে পাচ্ছি না।