PHP5-FPM nginx में त्रुटियों को कैसे भेजता है?


9

मैं php-fpm और nginx में त्रुटि लॉगिंग के साथ थोड़ा प्रयोग कर रहा हूं क्योंकि मुझे वेब पर कोई अच्छा स्पष्टीकरण नहीं मिला। अधिकांश गाइड कहा कि मैं बदलना चाहिए catch_workers_outputकरने के लिए yesअगर मैं nginx के लिए PHP5-एफ पी एम पीछे से त्रुटियों भेजना चाहते हैं। हालाँकि, अपने प्रयोगों के दौरान मैंने पाया है कि जब catch_workers_outputभी सेट किया जाता है, तब भी noत्रुटियाँ nginx द्वारा ठीक से लॉग की जा रही होती हैं।

यहाँ मेरा virtualhost कॉन्फिग है:

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=nophp-fpm से कोई stderr आउटपुट (जब ) नहीं है तो भी PHP5-FPM nginx में त्रुटि लॉग कैसे भेजता है? मैं इसे कहीं भी प्रलेखित नहीं कर सकता।

जवाबों:


1

जब आपका nginx config 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 । संभवत: वहां संघर्ष है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.