पूरी स्थापना पर असंगत अस्थायी 404s | पोस्ट- template.php के साथ PHP त्रुटि


9

मैं इस पर बहुत उलझन में हूं: मेरे पास मीडिया मंदिर जीएस पर एक वर्डप्रेस इंस्टाल है [कई जो ठीक काम करते हैं और लगभग उसी के समान कॉन्फ़िगर किए गए हैं] जो मुझे कभी-कभार 404 सीटरवाइड दे रहा है। जब ऐसा होता है तो मुझे अपने PHP त्रुटि लॉग में एक साथ 3 त्रुटियां मिलती हैं:

[01-Nov-2013 22:20:50 UTC] PHP Notice:  Trying to get property of non-object in /nfs/---/---/mnt/---/domains/---.---/html/wp-includes/post-template.php on line 275
[01-Nov-2013 22:20:50 UTC] PHP Notice:  Trying to get property of non-object in /nfs/---/---/mnt/---/domains/---.---/html/wp-includes/post-template.php on line 209
[01-Nov-2013 22:20:50 UTC] PHP Notice:  Trying to get property of non-object in /nfs/---/---/mnt/---/domains/---.---/html/wp-includes/post-template.php on line 29

पहले दो का संबंध $postवस्तु और 3 से है: get_post()->ID;जो मुझे लगता है कि $postवस्तु का निर्माण है ।

मेरे पास इन दो समान त्रुटि संदेशों के लगभग 25 मिनट अलग हैं [2s से दूर]।

मैंने MT समर्थन की कोशिश की है, लेकिन उन्हें लगता है कि यह WP त्रुटि होनी चाहिए। मैं WP का नवीनतम संस्करण चला रहा हूं, लेकिन इस समस्या को पहले के संस्करणों के साथ अनुभव कर रहा हूं।

मेरे पास 2 प्लगइन्स सक्षम थे: W3 कुल कैश और AJAX थंबनेल पुनर्निर्माण

मैंने कैश प्लगइन के साथ और उसके बिना परीक्षण किया है और समस्या बनी रहती है। मैंने यह देखने के लिए कि क्या कोई फर्क पड़ता है, बस थम्बनेल प्लग को निष्क्रिय कर दिया है।

कृपया यह पागल हो मुझे मदद कर रहा है! [और मैं आज इस साइट को सार्वजनिक रूप से लॉन्च करना चाहता था]

संपादित करें

मुझे यह भी उल्लेख करना चाहिए कि मैंने इस त्रुटि को कुछ पर देखा है, लेकिन इस सर्वर पर अन्य सभी वर्डप्रेस इंस्टॉल नहीं हैं। मुझे लगता है कि 100% निश्चित नहीं हो सकता है, कि जो गलतियाँ दिखा रहे हैं वे ठीक काम करने वालों की तुलना में नए इंस्टाल हैं। हालांकि सभी इंस्टॉल पूरी तरह से अपडेट हैं।

EDIT2

मैं सिर्फ एक और WP परियोजना पर काम कर रहा हूं और कम से कम महसूस किया है कि उन 3 त्रुटियों का क्या मतलब है। मैं कस्टम पोस्ट प्रकार के मौजूद पृष्ठ पर जाकर उन तीन php त्रुटियों को पुन: उत्पन्न कर सकता हूं जो मौजूद नहीं हैं। हालाँकि, यह इस बात की व्याख्या नहीं करता है कि इस प्रश्न में 404 क्यों होता है, विशेष रूप से क्योंकि यह केवल कस्टम पोस्ट प्रकार इंडेक्स पृष्ठों पर नहीं होता है। हालाँकि मुझे लगता है कि यह किसी तरह से कस्टम पोस्ट प्रकारों से संबंधित होना चाहिए।


साइडवाइड का अर्थ सभी पृष्ठों / पोस्ट / श्रेणियों पर है, लेकिन wp-admin में नहीं है, इसलिए मूल रूप से कोई भी दृश्य पृष्ठ है? ps: W3TC प्लगइन को अक्षम करना सभी कैशिंग कार्यक्षमता को तुरंत नहीं हटाता है। बेहतर तरीका प्लगइन के मुख्य विकल्प पृष्ठ पर कैशिंग को अक्षम करना है और यह वास्तव में कैशिंग / कैश कॉन्फ़िगरेशन समस्या की तरह लगता है।
s1lv3r

हाँ बग़ल में किसी भी दृश्य पृष्ठ का अर्थ है, लेकिन wp-admin में कुछ भी नहीं। मुझे नहीं लगता कि W3 कैश प्लगइन के साथ ऐसा करने के लिए कुछ भी हो सकता है क्योंकि मैं सक्षम होने से पहले कभी-कभी विकास में यह समस्या थी।
3

2
क्या वे केवल तीन नोटिस हैं? मेरा कूबड़ यह है कि आपका डेटाबेस समाप्त हो रहा है, लेकिन यह आमतौर पर अपने स्वयं के नोटिस को ट्रिगर करेगा।
मैथ्यू बोयन्स 15

यह त्रुटि होने पर मुझे केवल ये तीन नोटिस मिलते हैं। यह एक घंटे में 2-3 बार के बीच होता है और मैं इसकी टाइमिंग में कोई पैटर्न नहीं देख सकता। यह तब हो सकता है जब किसी भी पृष्ठ पर न केवल घर / अभिलेखागार तक पहुंचने का प्रयास किया जाए। PHP loggin का स्तर 32767 [E_ALL] पर सेट है। मुझे लगता है कि मैंने पहले WP_DEBUG की कोशिश की और कुछ भी नहीं देखा लेकिन निश्चित नहीं हो सकता। अब प्रश्न में साइट लाइव है [! इस पर कोई विकल्प नहीं]। लेकिन मैं इस तरह के मापदंडों के साथ एक और छिपा स्थापित कर सकता हूं यदि आपको लगता है कि यह इसके लायक होगा।
iz

1
क्या आप एक ही समय में एक्सेस लॉग में देख सकते हैं यह पता लगाने के लिए कि यह किस चीज को ट्रिगर कर रहा है?
22

जवाबों:


1

404 त्रुटियां दो प्रकार की होती हैं: वर्डप्रेस-जनरेटेड और सर्वर-जनरेटेड।

कुछ सर्वर वातावरणों में, सीपीयू के अधिभार के मामले में या गलतफहमी के कुछ उदाहरणों के कारण 404s को गलत तरीके से सर्वर द्वारा प्रदर्शित किया जा सकता है, आदि आमतौर पर सर्वर-जनरेट की गई 404 त्रुटियां "निगंक्स" या "अपाचे" जैसा कुछ कहेंगे। पृष्ठ (सर्वर प्रकार पर निर्भर करता है)।

अन्य स्थितियों में, "झूठी सकारात्मक" 404 त्रुटियों को वर्डप्रेस (PHP) द्वारा उत्पन्न किया जा सकता है क्योंकि सुरक्षा प्लग-इन लोड किए गए संसाधनों तक पहुंच को रोक रहे हैं:

जब मैं एलिमेंटर के साथ पेज अपडेट करने का प्रयास करता हूं तो मुझे कभी-कभी 404 त्रुटि क्यों होती है?

https://wordpress.org/support/topic/getting-false-positive-404-errors-with-newest-update/

किसी भी सुरक्षा प्लग इन को अक्षम करने, कैश साफ़ करने और पृष्ठ को रीफ़्रेश करने का प्रयास करें। आपके सर्वर पर स्थापित ModSecurity जैसे सुरक्षा मॉड्यूल भी संभवतः इसका कारण हो सकते हैं।

यह एक खराब कोडित थीम या प्लगइन के कारण भी हो सकता है। जांचें कि क्या इसमें शामिल सभी साइटों पर एक सामान्य विषय या प्लगइन स्थापित है। और अगर यह समस्या केवल मीडिया टेम्पल होस्टिंग पर होती है, तो संभव है कि उनके पास कुछ गलत है, या यहां तक ​​कि आपका सर्वर बहुत अधिक डेटा के तहत है ...


0

आपकी समस्या के समाधान के लिए आपके पास पर्याप्त जानकारी नहीं है। किसी समस्या की जाँच करने के लिए पूर्ण स्टैक ट्रेस जोड़ने और अपनी त्रुटि लॉग में जानकारी का अनुरोध करने का प्रयास करें।

स्टैक ट्रेस को जोड़ने और अपनी त्रुटि लॉग में जानकारी का अनुरोध करने के लिए आप अपना स्वयं का कस्टम त्रुटि हैंडलर बना सकते हैं।

set_error_handler('wpse_120959_handle_error');

function wpse_120959_handle_error( $errno, $errstr, $errfile, $errline ) {

    if( $errno === E_USER_NOTICE ) {

        $error = PHP_EOL . PHP_EOL;

        $error .= sprintf('You have an error notice: "%s" in file "%s" at line: "%s".', $errstr, $errfile, $errline);
        $error .= wpse_120959_generate_stack_trace() . PHP_EOL;

        $error .= 'Request information:' . PHP_EOL;
        $error .= wpse_120959_generate_http_request_info();

        error_log( $error );
    }
}

// Function from php.net http://php.net/manual/en/function.debug-backtrace.php#112238
function wpse_120959_generate_stack_trace() {

    $e = new \Exception();

    $trace = explode( "\n" , $e->getTraceAsString() );

    // reverse array to make steps line up chronologically

    $trace = array_reverse( $trace );

    array_shift( $trace ); // remove {main}
    array_pop( $trace ); // remove call to this method

    $length = count( $trace );
    $result = array();

    for ($i = 0; $i < $length; $i++) {
        $result[] = ($i + 1)  . ')' . substr( $trace[$i], strpos( $trace[$i], ' ' ) ); // replace '#someNum' with '$i)', set the right ordering
    }

    $result = implode("\n", $result);
    $result = "\n" . $result . "\n";

    return $result;
}

function wpse_120959_generate_http_request_info() {

    $request_info = '';
    $request_info_format = "%s %s %s\nHTTP headers:\n";

    $headers = wpse_120959_get_headers();
    $header_format = "%s: %s \n";

    $request_method  = filter_input( INPUT_SERVER, 'REQUEST_METHOD', FILTER_SANITIZE_STRING );
    $request_uri     = filter_input( INPUT_SERVER, 'REQUEST_URI', FILTER_SANITIZE_STRING );
    $server_protocol = filter_input( INPUT_SERVER, 'SERVER_PROTOCOL', FILTER_SANITIZE_STRING );

    $request_info = sprintf( $request_info_format, $request_method, $request_uri, $server_protocol );

    foreach ( $headers as $name => $value ) {
        $request_info .= sprintf( $header_format, $name, $value );
    }

    return $request_info;
}

function wpse_120959_get_headers() {

    $headers = [];

    foreach ($_SERVER as $name => $value) {

        if (preg_match('/^HTTP_/', $name ) ) {

            $value = filter_input( INPUT_SERVER, $name, FILTER_SANITIZE_STRING );

            $name = strtr( substr( $name, 5 ), '_', ' ');
            $name = ucwords( strtolower( $name ) );
            $name = strtr( $name, ' ', '-' );

            // add to list
            $headers[$name] = $value;
        }
    }

    return $headers;
}

आप यह जांच सकते हैं कि यह single.phpफ़ाइल में आपके कोड में कहीं ट्रिगर_error जोड़कर काम कर रहा है या नहीं।

trigger_error('Annoying notice');

आपका त्रुटि लॉग कुछ इस तरह आउटपुट होना चाहिए:

2018/07/02 14:26:00 [error] 714#714: *58 FastCGI sent in stderr: "PHP message:

You have an error notice: "Annoying notice" in file "/var/www/test/content/themes/twentyseventeen/single.php" at line: "19".
1) /var/www/test/index.php(17): require('/var/www/test/w...')
2) /var/www/test/wordpress/wp-blog-header.php(19): require_once('/var/www/test/w...')
3) /var/www/test/wordpress/wp-includes/template-loader.php(74): include('/var/www/test/c...')
4) /var/www/test/content/themes/twentyseventeen/single.php(19): trigger_error('Annoying notice')
5) [internal function]: wpse_120959_handle_error(1024, 'Annoying notice', '/var/www/test/c...', 19, Array)

Request information:
GET /hello-world/ HTTP/1.1
HTTP headers:
Accept-Language: en-US;q=0.8,en;q=0.7
Accept-Encoding: gzip, deflate
Referer: http://test.local/
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8
User-Agent: Mozilla/5.0 AppleWebKit/604.1.38 (KHTML, like Gecko) Version/11.0 Mobile/15A372 Safari/604.1
Upgrade-In" while reading upstream, client: 192.168.10.1, server: test.local, request: "GET /hello-world/ HTTP/1.1", upstream: "fastcgi://unix:/var/run/php/php7.2-fpm.sock:", host: "test.local", referrer: "http://test.local"

इस तरह के संदेश से यह पता लगाना बहुत आसान हो जाएगा कि समस्या कहां है।

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