मुझे प्रदर्शन में PHP त्रुटियां कैसे आती हैं?


1730

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

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

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

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


8
मैंने अभी तक नाखून काटने के लिए अभी तक क्यों यह कभी-कभी काम करता है और दूसरों को नहीं, लेकिन किसी के लिए भी php स्क्रिप्ट में त्रुटियों को जल्दी से टॉगल करना चाहते हैं (या उन्हें एक $_REQUESTपैरामीटर के माध्यम से सक्षम करें ) ये दो लाइनें अधिकांश समय काम करेंगी।
ब्रैंडनस्क्रिप्ट

अच्छी तरह से आप php ini फ़ाइल से xdebug को सक्षम करके त्रुटि का विवरण देख सकते हैं।
जौहरी

यहाँ एक त्वरित लेख है जो इस विषय को शामिल करता है - blog.phplogger.com/2019/03/10/error-message-visibility-in-php
बोगडांस

जवाबों:


3198

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

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

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

display_errors = on

(यदि आपके पास पहुंच नहीं है php.ini, तो इस लाइन को .htaccessभी काम कर सकते हैं):

php_flag display_errors 1

9
यह भी ध्यान दें कि आप इन 3 लाइनों का उपयोग कर सकते हैं, और फिर ('fileImWorkingOn.php') शामिल कर सकते हैं; तब आप सिंटैक्स त्रुटियों को भी पकड़ सकते हैं!
स्नैप Snap

14
जबकि मैं कोई SysOps नहीं हूं, मुझे लगता है कि php.ini की तुलना में अधिक लोगों के पास एक .htaccess फ़ाइल है, और ये दोनों पार्सिंग से पहले आएंगे, है ना? php_flag display_errors 1.htaccess के लिए
रयान टेलर

1
तो अब त्रुटियों को लॉग इन किया जाता है, वे कहाँ जाते हैं? मैं / var / log / apache2 में गया था और यह सभी लॉग दिखाता है, लेकिन हाल ही में मैंने जो कार्यक्रम चलाया उसके बारे में कोई जानकारी नहीं है। मुझे केवल हर सुबह एक बार सिस्टम रीस्टार्ट होने की जानकारी मिलती है।
माइकल

1
@ मिचेल त्रुटियां स्क्रीन पर सही जाती हैं या जहां आउटपुट को रीडायरेक्ट किया जाता है
फैंसी जॉन

2
E_ALLPHP 5.3 में सभी त्रुटियों को प्रदर्शित करने के लिए पर्याप्त नहीं है । " 5.4.0 E_STRICTका हिस्सा बन गया E_ALL" - PHP मैनुअल आपको चाहिए E_ALL | E_STRICTया -1उस संस्करण में।
गेरार्ड रोशे

155

रनटाइम पर त्रुटि आउटपुट सक्षम करते समय आप पार्स त्रुटियों को पकड़ नहीं सकते हैं, क्योंकि यह फ़ाइल को वास्तव में कुछ भी निष्पादित करने से पहले पार्स करता है (और चूंकि यह इस दौरान एक त्रुटि का सामना करता है, यह कुछ भी निष्पादित नहीं करेगा)। आपको वास्तविक सर्वर कॉन्फ़िगरेशन को बदलने की आवश्यकता होगी ताकि डिस्प्ले_रियर्स चालू हो और एप्रीओरेट एरर_प्रोटिंग स्तर का उपयोग किया जाए। यदि आपके पास php.ini तक पहुंच नहीं है, तो आप सर्वर के आधार पर .htaccess या समान का उपयोग करने में सक्षम हो सकते हैं।

यह प्रश्न अतिरिक्त जानकारी प्रदान कर सकता है।


2
वह नहीं जानता था। मैंने php.ini फ़ाइल को मैन्युअल रूप से संपादित किया है और यह अब काम कर रही है। धन्यवाद!
Abs

143

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

display_errors = on

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


7
+ ①। मेरे ubuntu /etc/php5/apache2/php.ini पर
m93a

5
के लिए पुनः आरंभ (Debian, Ubuntu, आदि)sudo service apache2 restart
पीटर क्रूस

4
OS X पर पुनः आरंभ करने के लिए sudo apachectl -k restart
मटर

3
मज़ेदार तथ्य: आप अपनी php.ini फ़ाइल को लोड कर सकते हैं यदि आप बस phpinfo () में डालते हैं; एक रिक्त php फ़ाइल में। यह नीचे 7 वीं पंक्ति है और कहा जाता हैLoaded Configuration File
फ्रैंकनमिंट

अगर हम cPanel पर php कोड direclty लिख रहे हैं तो हम कैसे कर सकते हैं?
अर्काम

98

आपको सभी त्रुटियों को प्रदर्शित करने के लिए:

1. PHP स्क्रिप्ट में इन पंक्तियों को अपने ब्राउज़र से कॉल करें (आमतौर पर index.php):

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

2. (क) सुनिश्चित करें कि इस स्क्रिप्ट में कोई सिंटैक्स त्रुटियां नहीं हैं

-या-

2. (b) display_errors = Onअपने में सेट करेंphp.ini

अन्यथा, यह उन 2 लाइनों को भी नहीं चला सकता है!

आप अपनी स्क्रिप्ट में सिंटैक्स त्रुटियों को चलाकर (कमांड लाइन पर) देख सकते हैं:

php -l index.php

यदि आप स्क्रिप्ट को दूसरी PHP स्क्रिप्ट से शामिल करते हैं तो यह शामिल स्क्रिप्ट में वाक्यविन्यास त्रुटियों को प्रदर्शित करेगा । उदाहरण के लिए:

index.php

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

// Any syntax errors here will result in a blank screen in the browser

include 'my_script.php';

my_script.php

adjfkj // This syntax error will be displayed in the browser

51

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

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

php_value display_errors 1

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


और यदि आप nginx वातावरण में हैं, तो स्थान ~ \ .php निर्देश के तहत अपनी साइट (साइट-उपलब्ध) कॉन्फ़िगरेशन के लिए php मान जोड़ें। fastcgi_param PHP_VALUE "error_reporting = E_ALL; \ n display_errors = 1;";
लाज़रोस कोस्मिडिस

40

आपको "त्रुटि रिपोर्टिंग" के लिए सभी सेटिंग्स मिल सकती हैं या "प्रदर्शन त्रुटियां" 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'];
}

1
क्या आपका मतलब PHP7 या PHP7.1 है? मैं भ्रमित हूं, मैंने प्रस्तावित उत्तर के रूप में प्रयास किया और यह काम करता है, मुझे लगता है कि आप कुछ अलग IMHO का प्रस्ताव कर रहे हैं, वास्तव में "कोई पिछड़ी संगतता" नहीं है और यदि आपको पूर्ण PHP <7 कोड को संशोधित करना है और try{} catch() {}हर जगह कोड जोड़ना होगा। आपके पहले से परिभाषित php कोड में, मैं उस गड़बड़ के बारे में सोचना भी नहीं चाहता जो कि होने जा रही है ..
vdegenne

@ फैन्सीजोन, यह मदद कर सकता है $bt = debug_backtrace(); print_r($bt);:।
फ्रैंक फोर्ट

@ballangddang, मैं PHP 7.0 के साथ इस मुद्दे पर भाग गया, जहां मुझे प्रदर्शन करने का एकमात्र तरीका मिल सकता था, कोशिश / कैच ब्लॉक और विशेष रूप से पकड़ने का उपयोग कर रहा था Error। यदि आप index.php फ़ाइल में सभी अनुरोधों (शायद जावास्क्रिप्ट, सीएसएस, चित्र, आदि को छोड़कर) को फिर से लिखते हैं, तो वहां पर कोशिश पकड़ ब्लॉक है, यह आसान बनाता है। हां, ऐसी कोई भी प्रणाली जिसमें एक भी प्रवेश बिंदु नहीं है, अद्यतन करने के लिए एक प्रमुख सिरदर्द होगा।
फ्रैंक फोर्ट

क्या PHP अखंडित अपवाद नहीं दिखाता है? बहुत यकीन है कि यह करता है?
मार्टिन टूरनोइज

इसे बिना किसी अपवाद के दिखाना चाहिए। यदि आप प्रारंभ में आउटपुट बफ़र चालू करते हैं (ताकि आप रिस्पॉन्स बॉडी को फ्लश करने से पहले किसी भी बिंदु पर हेडर भेज सकें) तो अपवाद संदेश कहीं खो सकता है।
फ्रैंक फोर्ट


33

उपयोग:

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

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

php -l phpfilename.php


20

उस फ़ोल्डर में php.ini नामक फ़ाइल बनाएँ जहाँ आपकी PHP फ़ाइल रहती है।

इनसाइड php.ini निम्नलिखित कोड जोड़ें (मैं कोड दिखाते हुए एक साधारण त्रुटि दे रहा हूं):

display_errors = on

display_startup_errors = on

18

यहाँ एक 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 () पर जाएँ


2
यह फैंसी जॉन के जवाब से कैसे अलग है ?
सभी कार्यकर्ता

@cpburnz - इसके सीधे आगे के सवाल हैं, हर एक ने अपने स्वाद में समान कोड दिए हैं जो एकमात्र अंतर है। मैंने अतिरिक्त URL लिंक दिया जो PHP त्रुटि के बारे में अधिक जानकारी देगा।
B.Balanigandan

15

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

error_reporting(E_ALL);
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 {
    ...
}

1
नहीं, एरर रिपोर्टिंग लैग्वेल नहीं है, यह एक बिटफील्ड है। 999999 का उपयोग करना एक बहुत बुरा विचार है, उदाहरण के लिए, 2047 के कुछ पावर-टू-माइनस 1 का उपयोग करें!
पीटर - मोनिका

आप बिल्कुल सही कह रहे हैं, @peterh! मैंने इसे E_ALL में बदल दिया है क्योंकि यह सभी त्रुटियों की रिपोर्ट करने में सक्षम होगा (php 5.4 और नीचे में सख्त त्रुटियों को छोड़कर)।
jxmallett

15

मैं आमतौर पर अपने सादे 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 = 'Production URL'; /* https://google.com */
            error_reporting(0);
            /* Mechanism to log errors */
            break;

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

15

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

इसे देखो

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


लिंक टूट गया है (404)।
पीटर मोर्टेंसन

14

यदि आप किसी तरह से अपने आप को ऐसी स्थिति में पाते हैं जहाँ आप सेटिंग को संशोधित नहीं कर सकते हैं php.iniया .htaccessआप त्रुटियों को प्रदर्शित करने के लिए भाग्य से बाहर हैं जब आपकी PHP स्क्रिप्ट में पार्स त्रुटियां होती हैं। फिर आपको इस तरह कमांड लाइन पर फाइलों को लाइनिंग करने के लिए हल करना होगा:

find . -name '*.php' -type f -print0 | xargs -0 -n1 -P8 php -l | grep -v "No syntax errors"

यदि आपका होस्ट इतना बंद है कि यह मान को बदलने की अनुमति नहीं देता है php.iniया .htaccess, इसके माध्यम से मान को बदलना भी अस्वीकार कर सकता है ini_set। आप निम्न PHP स्क्रिप्ट के साथ देख सकते हैं:

<?php
if( !ini_set( 'display_errors', 1 ) ) {
  echo "display_errors cannot be set.";
} else {
  echo "changing display_errors via script is possible.";
}

find . -name '*.php' -type f -exec php -l {} \; | grep -v 'No syntax errors detected'सरल है
scones

14

जैसा कि हम अब PHP 7 चला रहे हैं, यहाँ दिए गए उत्तर किसी भी अधिक सही नहीं हैं। केवल वही अभी भी ठीक है फ्रैंक फॉरेस्ट से एक है , क्योंकि वह PHP 7 के बारे में बात करता है।

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

यहाँ कोड के तीन टुकड़े हैं:

फ़ाइल: tst1.php

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

PHP 7 में इसे चलाने से कुछ नहीं दिखेगा।

अब, यह प्रयास करें:

फ़ाइल: tst2.php

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

फ़ाइल: tst3.php

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

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

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


13

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

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

    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);

अधिक जानकारी के लिए, यहाँ देखें


क्या है "मुख्य इंडेक्स फ़ाइल" ? फ़ाइल index.html?
पीटर मॉर्टेंसन

12

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

function ERR_HANDLER($errno, $errstr, $errfile, $errline){
    $msg = "<b>Something bad happened.</b> [$errno] $errstr <br><br>
    <b>File:</b> $errfile <br>
    <b>Line:</b> $errline <br>
    <pre>".json_encode(debug_backtrace(), JSON_PRETTY_PRINT)."</pre> <br>";

    echo $msg;

    return false;
}

function EXC_HANDLER($exception){
    ERR_HANDLER(0, $exception->getMessage(), $exception->getFile(), $exception->getLine());
}

function shutDownFunction() {
    $error = error_get_last();
    if ($error["type"] == 1) {
        ERR_HANDLER($error["type"], $error["message"], $error["file"], $error["line"]);
    }
}

set_error_handler ("ERR_HANDLER", E_ALL & ~E_NOTICE & ~E_STRICT & ~E_DEPRECATED);
register_shutdown_function("shutdownFunction");
set_exception_handler("EXC_HANDLER");

7

शीर्ष पर यह कोड काम करना चाहिए:

error_reporting(E_ALL);

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

error_reporting =on

6

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

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

Php7 के लिए, catch (Throwable $e)बेहतर है ... या नीचे का दूसरा कैच ब्लॉकcatch(Error $e)
फ्रैंक फोर्ट


4

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

error_reporting = E_ALL
display_errors = On

2
में बदल रहा है? में जोड़ना?
पीटर मोर्टेंसन

atm आपके उत्तर का कोई मतलब नहीं है क्योंकि इसका अभाव संदर्भ है; पीटर मोर्टेंसन द्वारा भी निर्धारित। इसमें सुधार नहीं करने पर इसे "हटाने के लिए झंडा" (बॉट्स द्वारा) लगाया जाता है। (लो-क्वालिटी रिव्यू से)।
ZF007

4
    <?php
    // Turn off error reporting
    error_reporting(0);

    // Report runtime errors
    error_reporting(E_ERROR | E_WARNING | E_PARSE);

    // Report all errors
    error_reporting(E_ALL);

    // Same as error_reporting(E_ALL);
    ini_set("error_reporting", E_ALL);

    // Report all errors except E_NOTICE
    error_reporting(E_ALL & ~E_NOTICE);
    ?>

जब आपकी साइट लाइव होती है, तो php.iniफ़ाइल में सुरक्षा कारणों के लिए प्रदर्शन_रियर्स अक्षम होना चाहिए। हालांकि, विकास के माहौल के लिए, समस्या निवारण के लिए display_errors को सक्षम किया जा सकता है।


4

आप इसे php.ini फ़ाइल को बदलकर और निम्न जोड़कर कर सकते हैं

display_errors = on
display_startup_errors = on

या आप निम्न कोड का भी उपयोग कर सकते हैं क्योंकि यह हमेशा मेरे लिए काम करता है

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

3

यदि आपके पास 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। यह बिटमैक्स तार्किक रूप से ऑरमेड होगा जो कि डरमाइन को error_reporting द्वारा दर्शाया गया है, जिसमें त्रुटियों को प्रदर्शित किया जाना चाहिए। यह सेटिंग केवल php.ini में बनाई जा सकती है और आपको कुछ त्रुटियों को दिखाने से रोकने के लिए अनुमति देती है, चाहे कोई भी आवेदन ini_set () के साथ न हो।


3

आप इस कोड का उपयोग करना चाहते हैं:

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

2

E_NOTICE को छोड़कर सभी त्रुटियों की रिपोर्ट करें

error_reporting(E_ALL & ~E_NOTICE);

सभी PHP त्रुटियों को प्रदर्शित करें

error_reporting(E_ALL);  or ini_set('error_reporting', E_ALL);

सभी त्रुटि रिपोर्टिंग को बंद करें

error_reporting(0);

1

यूनिक्स सीएलआई में , किसी फ़ाइल की केवल त्रुटियों को पुनर्निर्देशित करना बहुत ही व्यावहारिक है :

./script 2> errors.log

फिर लाइव बदलाव के लिए एक और शेल से:

tail -f errors.log

या केवल

watch cat errors.log

यह कैसे PHP के बारे में इस सवाल का जवाब देता है?
पीटर मोर्टेंसन

./scriptphp CLI स्क्रिप्ट (हैशबंग #!/usr/bin/php) है। आप किसी फ़ाइल में php त्रुटियों को इस प्रकार पुनर्निर्देशित कर सकते हैं। यह यूनिक्स पाइपिंग है। यह CGI के रूप में php नहीं है।
एनवीआरएम

0

यदि यह कमांड लाइन पर है, तो आप सेटिंग को ओवरराइड करने के लिए phpसाथ चल सकते हैं :-ddisplay_errors=1php.ini

php -ddisplay_errors=1 script.php

-1

PHP स्क्रिप्ट में कार्यों php.iniऔर ini_set()कार्यों के अलावा , आप नीचे दिखाए गए निर्देशों .htaccessऔर httpd.confनिर्देशों के साथ भी ऐसा कर सकते हैं ।

कुछ होस्टिंग प्रदाता सेट PHP सेटिंग्स के माध्यम से .htaccessऔर httpd.conf

PHP त्रुटियों को छिपाएँ

php_flag display_startup_errors ON

php_flag display_errors ON

php_flag html_errors ON

php_flag log_errors on

php_flag ignore_repeated_errors off

php_flag ignore_repeated_source off

php_flag report_memleaks on

php_flag track_errors on

php_value docref_root 0

php_value docref_ext 0

php_value error_log /home/path/public_html/domain/PHP_errors.log

php_value error_reporting 999999999

php_value error_reporting -1

php_value log_errors_max_len 0

Order allow,deny

Deny from all

Satisfy All

इस जवाब को गुगली करके थोड़ा सा पाया

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