लगभग 24 घंटे की लंबी दौड़ के बाद, नेटबिन्स 8.0.2 के साथ काम करने के लिए xdebug बनाने की कोशिश कर रहा है, मुझे एक समाधान मिल गया है, मुझे आशा है कि, सभी Ubuntu और Ubuntu संबंधित ढेर के लिए काम करेंगे।
समस्या संख्या 1: PHP और xdebug संस्करण संगत होने चाहिए
कभी-कभी, यदि आप लिनक्स सेटअप चला रहे हैं और xdebug स्थापित करने के लिए उपयुक्त नहीं हैं, तो यह आपको उचित xdebug संस्करण नहीं मिलेगा। मेरे मामले में, मेरे पास नवीनतम php संस्करण लेकिन एक पुराना xdebug संस्करण था। यह मेरे वर्तमान ज़ुबांटू संस्करण के कारण होना चाहिए। सॉफ्टवेयर संस्करण रिपॉजिटरी पर निर्भर हैं, जो आपके द्वारा चलाए जा रहे ओएस संस्करण पर निर्भर हैं।
समाधान: PHP में PECL नामक एक साफ विस्तार प्रबंधक है। इसे दिए और चलाने के लिए यहां दिए गए निर्देशों का पालन करें । सबसे पहले, जैसा कि टिप्पणियों में एक सदस्य द्वारा बताया गया है, आपको PECL को काम करने के लिए PHP के डेवलपर पैकेज को स्थापित करना चाहिए:
sudo apt-get install php5-dev
फिर, PECL का उपयोग करके, आप xdebug के नवीनतम स्थिर संस्करण को स्थापित करने में सक्षम होंगे:
sudo pecl install php5-xdebug
एक बार जब आप इसे कर लेते हैं, तो xdebug का उचित संस्करण इंस्टॉल हो जाएगा लेकिन उपयोग करने के लिए तैयार नहीं है। उसके बाद, आपको इसे सक्षम करना होगा। मैंने इसे करने के बारे में कई सुझाव देखे हैं, लेकिन इस तथ्य की सच्चाई यह है कि इस मामले में Apache क्लाइंट और सर्वर दोनों के लिए सक्षम होने के लिए कुछ मॉड्यूल की आवश्यकता होती है। ऐसा लगता है कि यहाँ का सबसे अच्छा अभ्यास है, मॉड्यूल को सक्षम करने की विधि का उपयोग करना, जिसे php5enmod कहा जाता है। उपयोग यहाँ वर्णित है ।
समस्या संख्या 2: मॉड्यूल को सही ढंग से सक्षम करें
सबसे पहले, आपको / etc / php5 फ़ोल्डर के अंदर जाना होगा। वहाँ, आपको 3 फ़ोल्डर मिलेंगे, Apache2, cli, और mods_available। Mods_available फ़ोल्डर में दिए गए मॉड्यूल को सक्रिय करने के निर्देशों के साथ पाठ फ़ाइलें हैं। नाम सम्मेलन [मॉड्यूल] .ini है। उनमें से कुछ के अंदर एक नज़र डालें, देखें कि उन्हें कैसे स्थापित किया जाता है।
अब आपको mods_available फ़ोल्डर के अंदर अपनी ini फाइल बनानी होगी। Xdebug.ini नामक एक फ़ाइल बनाएँ, और फ़ाइल के अंदर, इसे पेस्ट करें:
[xdebug]
zend_extension = /usr/lib/php5/20121212/xdebug.so
xdebug.remote_enable=on
xdebug.remote_handler=dbgp
xdebug.remote_mode=req
xdebug.remote_host=localhost
xdebug.remote_port=9000
सुनिश्चित करें कि निर्देश [xdebug] मौजूद है, बिल्कुल ऊपर के उदाहरण की तरह। मॉड्यूल के काम करने के लिए यह जरूरी है। वास्तव में, बस पूरे कोड को कॉपी और पेस्ट करें, आप इस तरह से एक खुशहाल व्यक्ति होंगे। : डी
नोट: zend_extension पाथ बहुत महत्वपूर्ण है। इस उदाहरण पर यह PHP इंजन के वर्तमान संस्करण को इंगित कर रहा है, लेकिन आपको पहले / usr / lib / php5 पर जाना चाहिए और यह सुनिश्चित करना चाहिए कि संख्याओं के साथ नामित फ़ोल्डर सही है। जो भी आप वहां देखते हैं उसका नाम समायोजित करें, और जब आप उस पर हों, तो xdebug.so वास्तव में वहाँ है यह सुनिश्चित करने के लिए फ़ोल्डर के अंदर जांचें। यह होना चाहिए, अगर आपने सब कुछ ठीक किया।
अब, आपके xdebug.ini के साथ, यह मॉड्यूल को सक्षम करने का समय है। ऐसा करने के लिए, एक कंसोल खोलें और टाइप करें:
php5enmod xdebug
यदि सब कुछ सही हो जाता है, तो PHP ने इस फ़ाइल के दो लिंक बनाए हैं, एक /etc/php5/apache2/conf.d के अंदर और दूसरा /etc/php5/cli/conf.d के अंदर।
अपने Apache सर्वर को पुनरारंभ करें और इसे कंसोल पर टाइप करें:
php -v
आपको कुछ इस तरह से मिलना चाहिए:
PHP 5.5.9-1ubuntu4.6 (cli) (built: Feb 13 2015 19:17:11)
Copyright (c) 1997-2014 The PHP Group
Zend Engine v2.5.0, Copyright (c) 1998-2014 Zend Technologies
with Zend OPcache v7.0.3, Copyright (c) 1999-2014, by Zend Technologies
with Xdebug v2.3.1, Copyright (c) 2002-2015, by Derick Rethans
जिसका अर्थ है कि PHP क्लाइंट ने आपकी xdebug.ini फ़ाइल पढ़ी और xdebug.so मॉड्यूल लोड किया। अब तक सब ठीक है।
अब अपने वेब सर्वर पर कहीं एक phpinfo स्क्रिप्ट बनाएं, और इसे चलाएं। यह वही है जो आपको देखना चाहिए, अगर सब कुछ राइट हो गया:
यदि आप यह देखते हैं, तो अपाचे ने भी मॉड्यूल लोड किया है, और आप शायद जाने के लिए तैयार हैं। अब देखते हैं कि क्या नेटबीन्स सही तरीके से डेब्यू करेंगे। एक बहुत ही सरल स्क्रिप्ट बनाएं, कुछ चर जोड़ें, उन्हें मान दें, और उन पर एक विराम बिंदु सेट करें। अब CTRL + F5 को हिट करें, अपने डीबगर पैनल पर "स्टेप इन" पर क्लिक करें, और देखें कि क्या आपको ऐसा कुछ मिलता है:
उपकरण / विकल्प / php के तहत डिबगिंग के लिए Netbeans कॉन्फ़िगरेशन की जांच करना याद रखें। यह कुछ इस तरह दिखना चाहिए:
मुझे आशा है कि यह इस पर कुछ प्रकाश डालता है बल्कि अस्पष्ट, भ्रामक समस्या है।
शुभकामनाएँ!
phpinfo()
इसे लोडेड एक्सटेंशन के रूप में रिपोर्ट करता है ? क्या "काम" से आपका मतलब है?