मैं PHP त्रुटियों को प्रदर्शित करने के लिए कैसे प्राप्त करूं?




error-reporting (16)

अपने php.ini के अंदर:

display_errors = on

फिर अपने वेब सर्वर को पुनरारंभ करें।

मैंने अपनी PHP ini फ़ाइल की जांच की है और डिस्प्ले त्रुटियां सेट की गई हैं और त्रुटि रिपोर्टिंग भी E_ALL । मैंने अपना अपाचे वेब सर्वर पुनरारंभ किया है।

मैंने इन पंक्तियों को मेरी लिपि के शीर्ष पर भी रखा है, और यह सरल पार्स त्रुटियों को भी पकड़ नहीं लेता है। उदाहरण के लिए, मैं "$" साथ चर घोषित करता हूं और मैं बयान बंद नहीं करता ";" । लेकिन मेरी सभी स्क्रिप्ट इन त्रुटियों पर एक खाली पृष्ठ दिखाती हैं, लेकिन मैं वास्तव में अपने ब्राउज़र आउटपुट में त्रुटियों को देखना चाहता हूं।

error_reporting(E_ALL);
ini_set('display_errors', 1);

क्या करना बाकी है?


अपाचे मॉड्यूल के रूप में PHP का उपयोग करते समय, हम अपाचे कॉन्फ़िगरेशन फ़ाइलों (जैसे httpd.conf) और .htaccess फ़ाइलों में निर्देशों का उपयोग करके कॉन्फ़िगरेशन सेटिंग्स को बदल सकते हैं। ऐसा करने के लिए आपको "ऑर्डर ओवरराइड विकल्प" या "सभी को ओवरराइड करें" विशेषाधिकारों की आवश्यकता होगी।

इसे देखो

http://funbird.co.uk/blog/tech-articals/linux-tech-articals/enabling-error-display-php-via-htaccess


आप नीचे कुछ ऐसा कर सकते हैं:

अपनी मुख्य अनुक्रमणिका फ़ाइल में पैरामीटर के नीचे सेट करें

    ini_set('display_errors', 1);
    ini_set('display_startup_errors', 1);

फिर अपनी आवश्यकता के आधार पर आप चुन सकते हैं कि आप कौन सा दिखाना चाहते हैं:

सभी त्रुटि, चेतावनी और सूचना के लिए

    error_reporting(E_ALL); OR error_reporting(-1);

सभी त्रुटियों के लिए

    error_reporting(E_ERROR);

सभी चेतावनियों के लिए

    error_reporting(E_WARNING);

सभी सूचनाओं के लिए

    error_reporting(E_NOTICE);

अधिक जानकारी के लिए here जांचें


आपको "त्रुटि रिपोर्टिंग" या "प्रदर्शन त्रुटियों" के लिए सभी सेटिंग्स PHP 7 में काम करने के लिए प्रकट नहीं हो सकती हैं। ऐसा इसलिए है क्योंकि त्रुटि प्रबंधन बदल गया है। इसके बजाए इसे आजमाएं:

try{
     // Your code
} 
catch(Error $e) {
    $trace = $e->getTrace();
    echo $e->getMessage().' in '.$e->getFile().' on line '.$e->getLine().' called from '.$trace[0]['file'].' on line '.$trace[0]['line'];
}

या, एक बार में अपवाद और त्रुटियों को पकड़ने के लिए (यह PHP 5 के साथ पिछड़ा संगत नहीं है):

try{
     // Your code
} 
catch(Throwable $e) {
    $trace = $e->getTrace();
    echo $e->getMessage().' in '.$e->getFile().' on line '.$e->getLine().' called from '.$trace[0]['file'].' on line '.$trace[0]['line'];
}

इसे अपने index.php में सेट करें

ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);

उपयोग:

ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);

इसे लिखने का यह सबसे अच्छा तरीका है, लेकिन एक वाक्यविन्यास त्रुटि खाली आउटपुट देती है, इसलिए सिंटैक्स त्रुटियों की जांच के लिए कंसोल का उपयोग करें। PHP कोड डीबग करने का सबसे अच्छा तरीका कंसोल का उपयोग करना है; निम्नलिखित चलाएं:

php -l phpfilename.php

कुछ वेब होस्टिंग प्रदाता आपको .htaccess फ़ाइल में PHP पैरा को बदलने की अनुमति देते हैं।

आप निम्न पंक्ति जोड़ सकते हैं:

php_value display_errors 1

मेरे पास आपके जैसा ही मुद्दा था और इस समाधान ने इसे ठीक किया।


चूंकि हम अब PHP7 चला रहे हैं, यहां दिए गए उत्तरों अब और सही नहीं हैं। केवल एक ही फ्रैंक फोर्ट से ठीक है, क्योंकि वह PHP7 के बारे में बात करता है। दूसरी ओर, कोशिश / पकड़ के साथ त्रुटि पकड़ने की कोशिश करने के बजाय आप एक चाल का उपयोग कर सकते हैं: उपयोग शामिल हैं। यहां कोड के 3 टुकड़े:

फ़ाइल: tst1.php

<?php
error_reporting(E_ALL);
ini_set('display_errors','On');
// Missing " and ;
echo "Testing
?>  

PHP7 में इसे चलाने से कुछ भी नहीं दिखाया जाएगा

अब, इसे आज़माएं:

फ़ाइल: tst2.php

<?php
error_reporting(E_ALL);
ini_set('display_errors','On');
include ("tst3.php");
?> 

फ़ाइल: tst3.php

<?php
// Missing " and ;
echo "Testing
?>  

अब tst2 चलाएं जो त्रुटि रिपोर्टिंग सेट करता है तो tst3 शामिल करें। तुम देखोगे:

पार्स त्रुटि: सिंटैक्स त्रुटि, फ़ाइल का अप्रत्याशित अंत, लाइन 4 पर tst3.php में परिवर्तनीय (T_VARIABLE) या $ {(T_DOLLAR_OPEN_CURLY_BRACES) या {$ (T_CURLY_OPEN) की अपेक्षा करता है


मैं आमतौर पर अपने सादा php प्रोजेक्ट में निम्न कोड के साथ जाऊंगा जो बहुत छोटा है, अगर परियोजना बड़ी हो जाती है तो मैं अनुशंसा करूंगा।

if(!defined('ENVIRONMENT')){
    define('ENVIRONMENT','DEVELOPMENT');
}

$base_url   =   null;

if (defined('ENVIRONMENT'))
{
    switch (ENVIRONMENT)
    {
        case 'DEVELOPMENT':
            $base_url   =   'http://localhost/product/';
            ini_set('display_errors',1);
            ini_set('display_startup_errors',1);
            error_reporting(E_ALL|E_STRICT);
            break;

        case 'PRODUCTION':
            $base_url   =   'Prod url'; /* https://google.com */
            error_reporting(0);
            /* Mechanism to log errors */
            break;

        default:
            exit('The application environment is not set correctly.');
    }
}

उम्मीद है की यह मदद करेगा।


मैंने यही सीखा। PHP.INI फ़ाइल में

error_reporting = E_ALL
display_errors = On

यदि आपके पास xdebug इंस्टॉल है तो आप सेटिंग करके प्रत्येक सेटिंग को ओवरराइड कर सकते हैं:

xdebug.force_display_errors = 1;
xdebug.force_error_reporting = -1;

force_display_errors

टाइप: int, डिफ़ॉल्ट मान: 0, Xdebug में प्रस्तुत किया गया> = 2.3 यदि यह सेटिंग 1 पर सेट की गई है तो त्रुटियों को हमेशा प्रदर्शित किया जाएगा, इससे कोई फर्क नहीं पड़ता कि PHP के display_errors की सेटिंग क्या है।

force_error_reporting

टाइप: int, डिफ़ॉल्ट मान: 0, Xdebug में प्रस्तुत किया गया> = 2.3 यह सेटिंग एक बिटमास्क है, जैसे error_reporting। यह बिटकमास्क तर्कसंगत रूप से त्रुटिपूर्ण होने के लिए त्रुटि_ रिपोर्टिंग द्वारा प्रतिनिधित्व बिटमैस्क के साथ ऑर्ड किया जाएगा, जो त्रुटियों को प्रदर्शित किया जाना चाहिए। यह सेटिंग केवल php.ini में बनाई जा सकती है और आपको कुछ त्रुटियों को दिखाए जाने से मजबूर करने की अनुमति देती है इससे कोई फर्क नहीं पड़ता कि कोई एप्लिकेशन ini_set () के साथ क्या करता है।


यदि, उपरोक्त सभी उत्तरों का पालन करने के बावजूद (या आप अपनी php.ini फ़ाइल को संपादित नहीं कर सकते हैं), तो आपको अभी भी एक त्रुटि संदेश नहीं मिल रहा है, एक नई PHP फ़ाइल बनाने का प्रयास करें जो त्रुटि रिपोर्टिंग को सक्षम बनाता है और फिर समस्या फ़ाइल शामिल करता है। उदाहरण के लिए:

error_reporting(9999999);
ini_set('display_errors', 1);
require_once('problem_file.php');

मेरे php.ini फ़ाइल में सब कुछ ठीक से सेट करने के बावजूद, यह एकमात्र तरीका था जिसे मैं नेमस्पेस त्रुटि पकड़ सकता था। मेरा सटीक परिदृश्य था:

//file1.php
namespace a\b;
class x {
    ...
}

//file2.php
namespace c\d;
use c\d\x; //Dies because it's not sure which 'x' class to use
class x {
    ...
}

यह हमेशा मेरे लिए काम करता है:

ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);

हालांकि, यह PHP त्रुटियों को दिखाने के लिए PHP नहीं बनाता है - उन त्रुटियों को दिखाने का एकमात्र तरीका यह है कि इस लाइन के साथ अपने php.ini को संशोधित करें:

display_errors = on

यहां एक PHP स्क्रिप्ट है:

<?php
    ini_set("display_startup_errors", 1);
    ini_set("display_errors", 1);

    /* Reports for either E_ERROR | E_WARNING | E_NOTICE  | Any Error*/
    error_reporting(E_ALL);

    echo(abc); /* Notice: abc is an undefined constant */
?>

PHP त्रुटियों के बारे में अधिक विस्तृत स्पष्टीकरण के लिए, PHP त्रुटि - error_reporting () पर जाएं


शीर्ष पर यह कोड त्रुटि_ रिपोर्टिंग (E_ALL) काम करना चाहिए;

हालांकि फ़ाइल में कोड को कोड में संपादित करने का प्रयास करें

error_reporting = चालू


सबसे अच्छा / आसान / तेज़ समाधान जिसका उपयोग आप त्वरित डिबगिंग कर सकते हैं, अपने कोड को आकर्षक अपवादों से घिरा हुआ है। जब मैं उत्पादन पर कुछ तेजी से जांचना चाहता हूं तो मैं यही कर रहा हूं।

try {

//Page code

} catch (Exception $e) {
    echo 'Caught exception: ',  $e->getMessage(), "\n";
}

आशा है कि ये आपकी मदद करेगा।





error-reporting