PHP त्रुटियाँ कैसे दिखाएँ: पेशेवरों और शुरुआती लोगों के लिए गाइड

शुरुआती लोगों के लिए ऑनलाइन Python प्रशिक्षक

Python आसानी से सीखें बिना सिद्धांत के बोझ के। स्वचालित जांच के साथ व्यावहारिक कार्य हल करें और ब्राउज़र में सीधे कोड लिखें।

पाठ्यक्रम शुरू करें

PHP में "मौत की सफेद स्क्रीन": त्रुटियों को कैसे बोलें?

\n\n

हर PHP डेवलपर ने इस स्थिति का सामना किया है: कोड काम करता हुआ लगता है, लेकिन स्क्रीन पर कुछ नहीं है। न कोई संदेश, न कोई चेतावनी। सिर्फ एक सफेद पृष्ठ और हल्का पागलपन का एहसास। परिचित लगता है? यह क्लासिक "मौत की सफेद स्क्रीन" (White Screen of Death - WSOD) है। अक्सर समस्या यह है कि PHP त्रुटि आउटपुट बंद है।

\n\n

Stack Overflow पर प्रश्न "How do I get PHP errors to display?" ने हज़ारों बार देखा गया है। और यह कोई संयोग नहीं है: त्रुटि प्रदर्शन सेट करना एक बुनियादी बात है जो हर किसी को पता होनी चाहिए। लेकिन केवल display_errors को सक्षम करना पर्याप्त नहीं है। यह समझना आवश्यक है कि यह आपके एप्लिकेशन के प्रदर्शन और सुरक्षा को कैसे प्रभावित करता है।

\n\n

इस लेख में हम चर्चा करेंगे:

\n
    \n
  • विभिन्न वातावरणों (स्थानीय, सर्वर पर, फ्रेमवर्क में) में PHP त्रुटियाँ कैसे सक्षम करें;
  • \n
  • इष्टतम डिबगिंग के लिए error_reporting कैसे सेट करें;
  • \n
  • प्रोडक्शन पर त्रुटि आउटपुट एक बुरा विचार क्यों है;
  • \n
  • प्रदर्शन को खोए बिना त्रुटियों को कैसे लॉग करें।
  • \n
\n\n

चलिए शुरू करते हैं!

\n\n

PHP त्रुटियाँ क्यों नहीं दिखाता? तीन मुख्य कारण

\n\n

कोड में जाने से पहले, आइए समझें कि त्रुटियाँ क्यों छिपी हो सकती हैं। PHP एक लचीली भाषा है, और इसका व्यवहार php.ini सेटिंग्स, स्क्रिप्ट और सर्वर वातावरण पर निर्भर करता है।

\n\n

1. php.ini सेटिंग्स

\n

मुख्य कारण display_errors निर्देश है। डिफ़ॉल्ट रूप से, कई होस्टिंग पर यह Off पर सेट होता है। यह सुरक्षा के लिए किया जाता है: प्रोडक्शन पर उपयोगकर्ता को स्टैक ट्रेस दिखाना एक बुरी प्रथा है।

\n\n

2. error_reporting() फ़ंक्शन

\n

भले ही display_errors सक्षम हो, त्रुटि स्तर बहुत कम हो सकता है। उदाहरण के लिए, error_reporting(0) सब कुछ छिपा देगा। या आप गलती से आवश्यक त्रुटि प्रकार (E_NOTICE, E_WARNING) को फ़िल्टर कर सकते हैं।

\n\n

3. स्क्रिप्ट निष्पादन से पहले त्रुटियाँ

\n

सबसे कपटी php.ini या शामिल फ़ाइलों में सिंटैक्स त्रुटियाँ हैं। यदि PHP स्क्रिप्ट चला भी नहीं सकता, तो यह आपकी सेटिंग्स तक नहीं पहुँचेगा। ऐसे मामलों में, कंसोल के माध्यम से सिंटैक्स जाँच मदद करती है: php -l file.php।

\n\n

PHP त्रुटि आउटपुट कैसे सक्षम करें: चरण-दर-चरण मार्गदर्शिका

\n\n

विधि 1. php.ini संपादित करना (स्थायी सेटिंग्स)

\n

सबसे विश्वसनीय तरीका php.ini को बदलना है। फ़ाइल ढूँढें (आमतौर पर यह /etc/php/ या /usr/local/etc/php/ में होती है) और सेट करें:

\n\n
display_errors = On\nerror_reporting = E_ALL
\n\n

बदलावों के बाद सर्वर को पुनरारंभ करना सुनिश्चित करें:

\n
sudo service apache2 restart\n# या nginx + php-fpm के लिए:\nsudo service php8.1-fpm restart
\n\n

लाभ: सेटिंग सर्वर पर सभी स्क्रिप्ट के लिए काम करती है।
\nनुकसान: सर्वर तक पहुँच की आवश्यकता है; साझा होस्टिंग के लिए उपयुक्त नहीं है।

\n\n

विधि 2. .htaccess के माध्यम से (Apache के लिए)

\n

यदि आपके पास php.ini तक पहुँच नहीं है, लेकिन Apache है, तो .htaccess का उपयोग करें:

\n\n
php_flag display_errors on\nphp_value error_reporting 32767  # E_ALL
\n\n

महत्वपूर्ण: यह विधि तभी काम करती है जब सर्वर पर AllowOverride निर्देश अनुमत हो।

\n\n

विधि 3. सीधे स्क्रिप्ट में (डिबगिंग के लिए)

\n

सबसे लचीला विकल्प किसी विशिष्ट फ़ाइल में त्रुटियाँ सक्षम करना है। डेवलपमेंट के लिए आदर्श:

\n\n
<?php\nini_set('display_errors', 1);\nini_set('display_startup_errors', 1);\nerror_reporting(E_ALL);\n\n// आपका कोड\necho $undefined_variable; // Notice उत्पन्न करेगा\n?>
\n\n

display_startup_errors पर ध्यान दें - यह स्क्रिप्ट निष्पादन से पहले होने वाली त्रुटियों (जैसे फ़ाइलों को शामिल करते समय) को पकड़ता है।

\n\n

विधि 4. फ्रेमवर्क विशिष्टताएँ (Laravel, Symfony, WordPress)

\n

आधुनिक फ्रेमवर्क के अपने तंत्र हैं। Laravel

ब्लॉग

पुस्तक अनुशंसाएँ