PHP
डिबगिंग
खोज…
डंपिंग चर
var_dump
फ़ंक्शन आपको डीबगिंग के लिए चर (प्रकार और मान) की सामग्री को डंप करने की अनुमति देता है।
उदाहरण:
$array = [3.7, "string", 10, ["hello" => "world"], false, new DateTime()];
var_dump($array);
आउटपुट:
array(6) {
[0]=>
float(3.7)
[1]=>
string(6) "string"
[2]=>
int(10)
[3]=>
array(1) {
["hello"]=>
string(5) "world"
}
[4]=>
bool(false)
[5]=>
object(DateTime)#1 (3) {
["date"]=>
string(26) "2016-07-24 13:51:07.000000"
["timezone_type"]=>
int(3)
["timezone"]=>
string(13) "Europe/Berlin"
}
}
त्रुटियों को प्रदर्शित करना
यदि आप चाहते हैं कि PHP पृष्ठ पर रनटाइम त्रुटियों को प्रदर्शित करे, तो आपको php.ini
या ini_set
फ़ंक्शन का उपयोग करके display_errors
को सक्षम करना होगा।
आप चुन सकते हैं कि कौन सी त्रुटियों को प्रदर्शित करना है, error_reporting
(या ini) फ़ंक्शन के साथ, जो कि E_*
स्वीकार करता है, जो बिटवाइज़ ऑपरेटरों का उपयोग करके संयुक्त होता है।
html_errors
सेटिंग के आधार पर PHP टेक्स्ट या HTML फॉर्मेट में html_errors
है।
उदाहरण:
ini_set("display_errors", true);
ini_set("html_errors", false); // Display errors in plain text
error_reporting(E_ALL & ~E_USER_NOTICE); // Display everything except E_USER_NOTICE
trigger_error("Pointless error"); // E_USER_NOTICE
echo $nonexistentVariable; // E_NOTICE
nonexistentFunction(); // E_ERROR
सादा पाठ आउटपुट: (HTML प्रारूप कार्यान्वयन के बीच भिन्न होता है)
Notice: Undefined variable: nonexistentVariable in /path/to/file.php on line 7
Fatal error: Uncaught Error: Call to undefined function nonexistentFunction() in /path/to/file.php:8
Stack trace:
#0 {main}
thrown in /path/to/file.php on line 8
नोट: यदि आपके पास त्रुटि रिपोर्ट php.ini में अक्षम है और इसे रनटाइम के दौरान सक्षम करते हैं, तो कुछ त्रुटियां (जैसे कि पार्स त्रुटियां) प्रदर्शित नहीं होंगी, क्योंकि वे रनटाइम सेटिंग लागू होने से पहले हुई थीं।
error_reporting
को संभालने का सामान्य तरीका यह है कि इसे विकास के दौरान E_ALL
निरंतर के साथ पूरी तरह से सक्षम किया जाए, और सार्वजनिक रूप से इसे प्रदर्शित करने के लिए इसे उत्पादन स्क्रिप्ट पर display_errors
साथ प्रदर्शित करने के लिए आपकी स्क्रिप्ट के आंतरिक भाग को अक्षम करें।
phpinfo ()
चेतावनी
यह जरूरी है कि phpinfo
का उपयोग केवल विकास के माहौल में किया जाए। उत्पादन वातावरण में phpinfo
युक्त कोड को कभी जारी न करें
परिचय
कहा जा रहा है कि, यह PHP वातावरण (OS, कॉन्फ़िगरेशन, संस्करण, पथ, मॉड्यूल) को समझने में एक उपयोगी उपकरण हो सकता है जिसमें आप काम कर रहे हैं, खासकर जब एक बग का पीछा करते हुए। यह एक सरल फ़ंक्शन में बनाया गया है:
phpinfo();
इसका एक पैरामीटर $what
आउटपुट को अनुकूलित करने की अनुमति देता है। डिफ़ॉल्ट INFO_ALL
, जिससे यह सभी सूचनाओं को प्रदर्शित करता है और आमतौर पर PHP की वर्तमान स्थिति को देखने के लिए विकास के दौरान उपयोग किया जाता है।
आप अनुकूलित सूची देखने के लिए INFO_*
ऑपरेटरों के साथ संयुक्त INFO_*
स्थिरांक पैरामीटर पारित कर सकते हैं।
आप इसे ब्राउज़र में अच्छी तरह से स्वरूपित विस्तृत रूप के लिए चला सकते हैं। यह PHP CLI में भी काम करता है, जहाँ आप इसे आसान दृश्य के लिए less
में पाइप कर सकते हैं।
उदाहरण
phpinfo(INFO_CONFIGURATION | INFO_ENVIRONMENT | INFO_VARIABLES);
यह PHP निर्देशों ( ini_get
), पर्यावरण ( $_ENV
) और पूर्वनिर्धारित चर की एक सूची प्रदर्शित करेगा।
Xdebug
Xdebug एक PHP एक्सटेंशन है जो डीबगिंग और प्रोफाइलिंग क्षमताओं को प्रदान करता है।
यह DBGp डीबगिंग प्रोटोकॉल का उपयोग करता है।
इस उपकरण में कुछ अच्छी विशेषताएं हैं:
- त्रुटियों पर निशान
- अधिकतम नेस्टिंग स्तर की सुरक्षा और समय की ट्रैकिंग
- चर दिखाने के लिए मानक
var_dump()
फ़ंक्शन का सहायक प्रतिस्थापन - सभी फ़ंक्शन कॉल लॉग करने की अनुमति देता है, जिसमें विभिन्न स्वरूपों में फ़ाइल में पैरामीटर और रिटर्न मान शामिल हैं
- कोड कवरेज विश्लेषण
- प्रोफाइलिंग जानकारी
- दूरस्थ डीबगिंग (डीबगर क्लाइंट के लिए इंटरफ़ेस प्रदान करता है जो PHP स्क्रिप्ट चलाने के साथ इंटरैक्ट करता है)
जैसा कि आप देख सकते हैं कि यह विस्तार विकास के माहौल के लिए पूरी तरह से अनुकूल है। विशेष रूप से दूरस्थ डिबगिंग सुविधा आपको कई var_dump के बिना अपने php कोड को डीबग करने में मदद कर सकती है और C++
या Java
भाषाओं में सामान्य डीबगिंग प्रक्रिया का उपयोग कर सकती है।
आमतौर पर इस एक्सटेंशन की स्थापना बहुत सरल है:
pecl install xdebug # install from pecl/pear
और इसे अपने php.ini में सक्रिय करें:
zend_extension="/usr/local/php/modules/xdebug.so"
अधिक जटिल मामलों में यह निर्देश देखें
जब आप इस उपकरण का उपयोग करते हैं तो आपको याद रखना चाहिए कि:
XDebug उत्पादन वातावरण के लिए उपयुक्त नहीं है
phpversion ()
परिचय
विभिन्न पुस्तकालयों और उनकी संबंधित आवश्यकताओं के साथ काम करते समय, वर्तमान पीएचपी पार्सर या इसके एक पैकेज के संस्करण को जानना अक्सर आवश्यक होता है।
यह फ़ंक्शन एक्सटेंशन नाम के रूप में एकल वैकल्पिक पैरामीटर स्वीकार करता है: phpversion('extension')
। यदि विस्तार में विस्तारित है, तो फ़ंक्शन स्ट्रिंग मान को लौटा देगा। हालाँकि, यदि FALSE
स्थापित नहीं किया गया एक्सटेंशन वापस कर दिया जाएगा। यदि एक्सटेंशन नाम प्रदान नहीं किया गया है, तो फ़ंक्शन PHP पार्सर के संस्करण को स्वयं वापस कर देगा।
उदाहरण
print "Current PHP version: " . phpversion();
// Current PHP version: 7.0.8
print "Current cURL version: " . phpversion( 'curl' );
// Current cURL version: 7.0.8
// or
// false, no printed output if package is missing
रिपोर्टिंग में त्रुटि (उन दोनों का उपयोग करें)
// this sets the configuration option for your environment
ini_set('display_errors', '1');
//-1 will allow all errors to be reported
error_reporting(-1);