কীভাবে পিএইচপি 5-এফপিএম ত্রুটি প্রেরণ করে এনজিনেক্সে?


9

ওয়েবে আর কোনও ভাল ব্যাখ্যা খুঁজে পাচ্ছি না বলে আমি পিএইচপি-এফপিএম এবং এনজিএনএক্স-এ লগ ইন করার ক্ষেত্রে কিছুটা পরীক্ষা করছি। বেশিরভাগ গাইড বলেছিলেন যে আমি পিএইচপি 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-এফপিএম পিএনএফপি-এফএমপি থেকে স্টাডার আউটপুট (কখন ) না থাকলেও কীভাবে এনগিনেক্সে ত্রুটি লগ প্রেরণ করে ? আমি এটি কোথাও নথিভুক্ত খুঁজে পাচ্ছি না।

উত্তর:


1

যখন আপনার এনগিনেক্স কনফিগারেশন php_admin_value , php_admin_flag এবং php_flag ব্যবহার করে এটি php.ini এ মানগুলি ওভাররাইড করে। Nginx সেটিংস সম্পর্কে মন্তব্য করার ফলে php.ini ফাইলটি দায়িত্বে চলে যাবে।

জন্য সেটিংস এ php.ini ফাইলে একবার দেখে নিন display_errors , display_startup_errors , error_reporting , html_errors এবং log_errors । সেখানে সম্ভবত দ্বন্দ্ব রয়েছে।

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