PHP एक शक्तिशाली स्क्रिप्टिंग भाषा है जिसका व्यापक रूप से वेब विकास के लिए उपयोग किया जाता है, लेकिन किसी भी भाषा की तरह, इसमें त्रुटियां होना आसान है जिन्हें डीबग करना निराशाजनक हो सकता है। हालाँकि कुछ त्रुटियाँ सरल और ठीक करने में आसान हैं, अन्य थोड़ी अधिक जटिल हो सकती हैं। यह आलेख कुछ सर्वाधिक सामान्य PHP त्रुटियों को शामिल करता है और उन्हें शीघ्रता से हल करने में आपकी सहायता के लिए समाधान प्रदान करता है।
एक वाक्यविन्यास त्रुटि तब होती है जब PHP दुभाषिया को ऐसे कोड का सामना करना पड़ता है जो अपेक्षित संरचना के अनुरूप नहीं होता है। ये सबसे बुनियादी प्रकार की त्रुटियां हैं और अक्सर खतरनाक पार्स त्रुटि का परिणाम होती हैं: सिंटैक्स त्रुटि, अप्रत्याशित टोकन संदेश।
echo "Hello World" // Missing semicolon
छूटे हुए या अतिरिक्त विराम चिह्नों के लिए अपने कोड की दोबारा जांच करें। सुनिश्चित करें कि आपके सभी प्रारंभिक और समापन कोष्ठक, कोष्ठक और उद्धरण मेल खाते हों।
echo "Hello World"; // Fixed
एक "अपरिभाषित वैरिएबल" त्रुटि तब होती है जब आप एक ऐसे वैरिएबल का उपयोग करने का प्रयास करते हैं जिसे प्रारंभ नहीं किया गया है। इस मामले में PHP एक नोटिस देगा: अपरिभाषित परिवर्तनीय त्रुटि।
echo $username; // Undefined variable
सुनिश्चित करें कि वेरिएबल को आपके कोड में उपयोग करने से पहले प्रारंभ किया गया है। आप यह जांच कर भी इस नोटिस को दबा सकते हैं कि वेरिएबल isset() का उपयोग करके सेट किया गया है या नहीं।
if (isset($username)) { echo $username; } else { echo "No username provided"; }
यह त्रुटि तब होती है जब आप किसी ऐसे फ़ंक्शन को कॉल करने का प्रयास करते हैं जिसे परिभाषित नहीं किया गया है। ऐसा इसलिए हो सकता है क्योंकि आपने फ़ंक्शन नाम की गलत वर्तनी लिखी है या फ़ंक्शन वाली आवश्यक फ़ाइल शामिल करना भूल गए हैं।
myFunction(); // Undefined function
सुनिश्चित करें कि फ़ंक्शन ठीक से परिभाषित है या आपकी स्क्रिप्ट में शामिल है। इसके अलावा, फ़ंक्शन नाम में टाइपो त्रुटियों की जांच करें।
function myFunction() { echo "Hello World!"; } myFunction(); // Fixed
यह त्रुटि तब होती है जब ब्राउज़र में आउटपुट पहले ही भेजे जाने के बाद PHP हेडर को संशोधित करने का प्रयास करता है (उदाहरण के लिए, हेडर() या सेटकुकी() के साथ)। त्रुटि संदेश आम तौर पर इस तरह दिखता है: चेतावनी: हेडर जानकारी को संशोधित नहीं किया जा सकता - हेडर पहले ही भेज दिया गया है...
echo "Some output"; header("Location: /newpage.php"); // Causes error because output was already sent
सुनिश्चित करें कि हेडर() फ़ंक्शन को कॉल करने से पहले कोई आउटपुट (व्हाट्सएप या बीओएम सहित) नहीं भेजा जाता है। यदि आपको उपयोगकर्ता को पुनर्निर्देशित करने की आवश्यकता है, तो सुनिश्चित करें कि किसी भी आउटपुट के उत्पन्न होने से पहले हेडर() को कॉल किया गया है।
header("Location: /newpage.php"); // This must appear before any echo or print statements exit();
अनुमति त्रुटियां तब होती हैं जब आपकी PHP स्क्रिप्ट में फ़ाइलों या निर्देशिकाओं तक पहुंचने के लिए उचित पढ़ने या लिखने की अनुमति नहीं होती है। आपको चेतावनी जैसी त्रुटियां दिखाई दे सकती हैं: fopen(/path/to/file): स्ट्रीम खोलने में विफल: अनुमति अस्वीकृत।
फ़ाइल और निर्देशिका अनुमतियों की जाँच करें। आमतौर पर, वेब सर्वर उपयोगकर्ताओं के पास फ़ाइलों के लिए पढ़ने की अनुमति और उन निर्देशिकाओं के लिए लिखने की अनुमति होनी चाहिए जहां अपलोड या फ़ाइल हेरफेर होते हैं। अनुमतियाँ समायोजित करने के लिए निम्न आदेश का उपयोग करें:
chmod 755 /path/to/directory chmod 644 /path/to/file
नोट: अनुमतियां सेट करते समय सावधान रहें, क्योंकि अत्यधिक अनुमति वाली सेटिंग्स सुरक्षा जोखिम पैदा कर सकती हैं।
जब PHP की आवंटित मेमोरी खत्म हो जाती है, तो आपको एक घातक त्रुटि दिखाई देगी: एक्स बाइट्स की अनुमत मेमोरी आकार समाप्त हो गई त्रुटि। ऐसा तब होता है जब कोई स्क्रिप्ट php.ini में निर्धारित सीमा से अधिक मेमोरी का उपयोग करती है।
आप अपनी PHP स्क्रिप्ट में निम्नलिखित पंक्ति जोड़कर मेमोरी सीमा को अस्थायी रूप से बढ़ा सकते हैं:
ini_set('memory_limit', '256M'); // Adjust as needed
वैकल्पिक रूप से, आप php.ini फ़ाइल में मेमोरी सीमा को स्थायी रूप से बढ़ा सकते हैं:
memory_limit = 256M
जहां संभव हो मेमोरी उपयोग को कम करने के लिए अपने कोड को अनुकूलित करना सुनिश्चित करें।
MySQL डेटाबेस से कनेक्ट करना कभी-कभी विफल हो सकता है, जिसके परिणामस्वरूप घातक त्रुटि: अनकॉट mysqli_sql_exception: एक्सेस अस्वीकृत फॉर यूजर 'यूजरनेम'@'लोकलहोस्ट' जैसी त्रुटि हो सकती है।
सुनिश्चित करें कि आपके क्रेडेंशियल सही हैं और MySQL सर्वर चल रहा है। साथ ही, उचित कनेक्शन फ़ंक्शन का उपयोग करना सुनिश्चित करें। यहां mysqli_connect() का उपयोग करके एक सही उदाहरण दिया गया है:
$mysqli = new mysqli('localhost', 'username', 'password', 'database'); if ($mysqli->connect_error) { die("Connection failed: " . $mysqli->connect_error); }
अनुचित सेटिंग्स या फ़ाइल आकार सीमाओं के कारण फ़ाइल अपलोड अक्सर विफल हो जाते हैं। आपको UPLOAD_ERR_INI_SIZE या UPLOAD_ERR_FORM_SIZE जैसी त्रुटियों का सामना करना पड़ सकता है।
निम्नलिखित php.ini सेटिंग्स को आवश्यकतानुसार जांचें और समायोजित करें:
file_uploads = On upload_max_filesize = 10M post_max_size = 12M
साथ ही, सुनिश्चित करें कि आपके फ़ॉर्म टैग में सही enctype विशेषता है:
यह नोटिस तब होता है जब आप किसी ऐसे सरणी तत्व तक पहुंचने का प्रयास करते हैं जो मौजूद नहीं है, जिससे नोटिस: अपरिभाषित सूचकांक या नोटिस: अपरिभाषित ऑफसेट त्रुटि उत्पन्न होती है।
echo $_POST['username']; // Undefined index if 'username' is not in the form data
ऐरे कुंजी तक पहुंचने का प्रयास करने से पहले हमेशा जांच लें कि सरणी कुंजी मौजूद है या नहीं। इस त्रुटि को रोकने के लिए isset() या array_key_exists() का उपयोग करें।
if (isset($_POST['username'])) { echo $_POST['username']; } else { echo "Username not provided."; }
PHP एक घातक त्रुटि फेंकता है: जब आप एक ऐसे वर्ग को इंस्टेंट करने का प्रयास करते हैं जिसे ठीक से परिभाषित या शामिल नहीं किया गया है तो क्लास 'क्लासनेम' को त्रुटि नहीं मिली।
सुनिश्चित करें कि क्लास वाली फ़ाइल require() या include() का उपयोग करके शामिल की गई है। वैकल्पिक रूप से, क्लास फ़ाइलों को स्वचालित रूप से लोड करने के लिए PHP के spl_autoload_register() फ़ंक्शन का उपयोग करें।
spl_autoload_register(function ($class_name) { include $class_name . '.php'; }); $object = new ClassName();
यदि आपकी PHP स्क्रिप्ट को निष्पादित होने में बहुत अधिक समय लगता है, तो आपको घातक त्रुटि का सामना करना पड़ सकता है: X सेकंड का अधिकतम निष्पादन समय पार हो गया त्रुटि। यह आमतौर पर बड़े डेटासेट या बाहरी एपीआई कॉल के साथ काम करते समय होता है।
आप अधिकतम निष्पादन समय को अस्थायी रूप से बढ़ा सकते हैं:
set_time_limit(300); // Extends to 300 seconds (5 minutes)
इसे विश्व स्तर पर सेट करने के लिए, php.ini फ़ाइल में max_execution_time निर्देश समायोजित करें:
max_execution_time = 300
PHP त्रुटियां अपरिहार्य हैं, लेकिन सबसे आम त्रुटियों से निपटने का तरीका जानने से आप डिबगिंग का बहुत सारा समय बचा सकते हैं। चाहे वह सिंटैक्स समस्या हो, डेटाबेस कनेक्शन समस्या हो, या फ़ाइल अनुमति त्रुटि हो, मूल कारण और समाधान को समझना एक कुशल PHP डेवलपर बनने की कुंजी है।
इस लेख में दिशानिर्देशों का पालन करके, आपको इन मुद्दों को प्रभावी ढंग से पहचानने और हल करने में सक्षम होना चाहिए। इन त्रुटियों को शीघ्र पकड़ने और सहज कोडिंग सुनिश्चित करने के लिए विकास के दौरान अपनी त्रुटि रिपोर्टिंग सक्षम रखें!
अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।
Copyright© 2022 湘ICP备2022001581号-3