2010-11-17 14 views
8

मेरे पास एक्सएएमपीपी 1.7.3 ए अमेज़ॅन ईसी 2 क्लाउड में "अमेज़ॅन लिनक्स" (सेंटोस-व्युत्पन्न) 32-बिट उदाहरण पर चल रहा है। मैंने XDEBUG 2.1.0 डाउनलोड/निर्मित/स्थापित किया। phpinfo में प्रासंगिक आइटम() इस तरह उत्पादन देखो:xdebug पोर्ट 9000 के साथ रिमोट डीबगिंग एसएस सुरंग के माध्यम से अग्रेषित - इसे कैसे काम करें?

Directive       Local Value Master Value 
xdebug.idekey      ECLIPSE_DBGP ECLIPSE_DBGP 
xdebug.default_enable    On   On 
xdebug.remote_autostart   On   On 
xdebug.remote_connect_back  Off   Off 
xdebug.remote_cookie_expire_time 3600   3600 
xdebug.remote_enable    On   On 
xdebug.remote_handler    dbgp   dbgp 
xdebug.remote_host    127.0.0.1 127.0.0.1 
xdebug.remote_mode    req   req 
xdebug.remote_port    9000   9000 
xdebug.remote_log     /opt/lampp/logs/xdebug_log 
               /opt/lampp/logs/xdebug_log 

मैं XP SP3 चला रहे Windows लैपटॉप से ​​लिनक्स बॉक्स का उपयोग, पुट्टी संस्करण 0.60 में SSH ग्राहक का उपयोग कर। लैपटॉप पर मैंने एक्लिप्स पीडीटी (हेलीओस सर्विस रिलीज 1 बिल्ड आईडी: 20100917-0705) स्थापित किया है, और मुझे लगता है कि मैंने पोर्ट 9000 का उपयोग कर XDEBUG रिमोट डीबगिंग करने के लिए इसे सही तरीके से कॉन्फ़िगर किया है। मैं कहता हूं कि सोचें, क्योंकि मुझे यह पता लगाने में कठिनाई हुई है कि इसे कैसे किया जाए, और आम तौर पर एक्लिप्स पीडीटी का उपयोग कैसे करें। लेकिन मैंने पोर्ट 9000 का उपयोग करते हुए स्थानीयहोस्ट (127.0.0.1) पर विंडोज 1.7.3 के लिए एक्सएएमपीपी का उपयोग करके किए गए वेब पृष्ठों द्वारा संचालित PHP कोड के "रिमोट" डीबगिंग के लिए कॉन्फ़िगर किया और काम किया। सर्वर के लिए phpinfo() आउटपुट लैपटॉप जो पीडीटी डिबग करने में सक्षम है पर, ऊपर के रूप में ही है के लिए छोड़कर:

xdebug.idekey  my_username  no value 
xdebug.remote_host localhost  localhost 
xdebug.remote_log no value  no value 

मैं यकीन है कि इन मतभेदों को समस्या से संबंधित नहीं हैं हूँ। वास्तव में, xdebug.idekey मूल रूप से लिनक्स पर "रूट नोल्यू" था, जिसे मैं फिर php.ini संपादित करके ईसीएलआईपीएसईबीबीजीपी में बदल गया और सुडो-एडी स्क्रिप्ट में पर्यावरण परिवर्तनीय डीबीजीपी_आईडीकेई को स्थापित करता हूं जो चीजों को काम करने की व्यर्थ आशा में अपाचे शुरू करता है।

मुझे लैपटॉप और लिनक्स बॉक्स के बीच फ़ायरवॉल और एनएटी राउटर मिला है। तो मैं लिनक्स XDEBUG विंडोज पीडीटी से बात करने के लिए एक पुटी एसएस सुरंग के माध्यम से बंदरगाह अग्रेषण का उपयोग करने की कोशिश कर रहा हूं। मैं कुछ महीनों के लिए PUTTY के साथ X11 अग्रेषण का उपयोग कर रहा हूं, बिना किसी समस्या के। मैं स्थानीय बंदरगाह 9000 लिनक्स बॉक्स पर बंदरगाह 9000 को अग्रेषित साथ पुट्टी में सुरंग, और लिनक्स बॉक्स 127.0.0.1 पर बंदरगाह 9000 को अग्रेषित पर बंदरगाह 9000 की स्थापना की, पुट्टी सुरंग पैनल दिखा:

L9000 host...amazonaws.com:9000 
R9000 127.0.0.1:9000 

खोज रहे हैं

2010-11-16 18:07:59 Local port 9000 forwarding to host...amazonaws.com:9000 
2010-11-16 18:07:59 Requesting remote port 9000 forward to 127.0.0.1:9000 
2010-11-16 18:07:59 Remote port forwarding from 9000 enabled 

लेकिन तब जब मैं पीडीटी के पास जाकर एक विन्यास कि दूरदराज के वेब सर्वर को निर्दिष्ट करता है पर डीबग पर क्लिक करें, पीडीटी पृष्ठभूमि गतिविधि से पता चलता है: जब सुरंग की स्थापना की है पुट्टी ईवेंट लॉग में, वहाँ कोई समस्या नहीं दिखाई देते हैं निचले दाएं कोने में जो 57% पर फंस जाता है, और यदि मैं प्रगति दृश्य पर जाने के लिए आइकन पर क्लिक करता हूं, तो यह दिखाता है कि "लॉन्चिंग: XDebug सत्र की प्रतीक्षा"।

जब ऐसा होता है, पुट्टी ईवेंट लॉग दिखाता है:

2010-11-16 19:05:42 Received remote port 9000 open request from 127.0.0.1:54474 
2010-11-16 19:05:42 Attempting to forward remote port to 127.0.0.1:9000 
2010-11-16 19:05:42 Forwarded port opened successfully 
2010-11-16 19:05:42 Opening forwarded connection to host...amazonaws.com:9000 
2010-11-16 19:05:42 Forwarded connection refused by server: Connect failed [Connection refused] 
2010-11-16 19:05:42 Forwarded port closed 

लिनक्स बॉक्स पर,/var/log/सुरक्षित बस पता चलता है:

Nov 16 19:01:51 ip-10-194-9-67 sshd[14555]: error: connect_to host...amazonaws.com port 9000: failed. 

मैं देख लिया है मेरी/etc/ssh/sshd_config, और मुझे लगता है कि यह ठीक है, इसे स्पष्ट रूप से "AllowTcpForwarding yes" में भी बदल रहा है, भले ही इसे डिफ़ॉल्ट माना जाता है।

इस इसे ठीक लग रहा था: होस्ट नाम हमेशा domain- किया गया है एक समाधान के लिए अपने वेब खोज में, मैं एक linuxquestions posting जहां अंतिम जबाब कुछ नहीं बल्कि गुप्त sshd के बारे में होस्टनाम का समाधान करने की आवश्यकता होगी, कहते हैं भर में आया था सर्व, क्योंकि मैं हमेशा डोमेन राउटर के रूप में अपने राउटर के बारे में सोचा था ... तो hostname domain.com चलाने के बाद ... बम! यह अंत में काम करता है ...

मुझे लगता है कि कभी-कभी यह बहुत आसान होता है। एसएसडीडी को डोमेन का समाधान करना पड़ा।कॉम मेरे राउटर में, कनेक्शन विफल हो गया।

मुझे लगता है कि यह मेरी समस्या से संबंधित हो सकता है, लेकिन यह मुझे कोई समझ नहीं आता है, और चूंकि यह बहुत पुराना है, और लेखक इसे समझ में नहीं आया, या तो, मैंने सोचा कि मैं यहां पूछूंगा इसके बजाए ...

मैंने नोटिस किया कि लगभग एक साल पहले इस मंच में similar question से पूछा गया था कि केवल एक 0-मूल्य प्रतिक्रिया मिली है, संभवतया सवाल यह है कि प्रश्न में अनावश्यक होने के कारण विस्तार से कमी आई थी। मुझे आशा है कि इस के पास पर्याप्त जानकारी है, और इतना लंबा नहीं है, ताकि कोई मुझे सही कर सके। Faqs और प्रश्न पूछने के बाद, यह मेरे लिए पूरी तरह से स्पष्ट नहीं था कि मंच का सही उपयोग उस मूल खराब पूछे जाने वाले लेकिन सामग्री-समान प्रश्न के तहत कुछ पोस्ट करना था, या इस नए को पोस्ट करने के लिए - I मुझे यकीन है कि कोई मुझे बताएगा कि उस पर सही विकल्प क्या था :-)

मैं इस चीज़ के साथ पागल हो रहा हूं, और मुझे संदेह है कि यह किसी अनुभव के साथ कुछ स्पष्ट है। मैं इस सामान (PHP, वेब प्रोग्रामिंग, नेटवर्क व्यवस्थापक, और इस मंच) में से अधिकांश के लिए एक नोब हूं, हालांकि पुरानी शैली के सी प्रोग्रामिंग और उपयोगकर्ता स्तर के लिनक्स और विंडोज सेटअप के लिए नहीं।

उत्तर

4

कितना शर्मनाक है, जाहिर है कि मेरा पोर्ट अग्रेषण सेटअप केवल कुछ नेटवर्क नोब करेगा? मुझे लगता है कि मैंने फैसला किया था कि चूंकि वेब सर्वर पर चल रहे एक्सडेबग लैपटॉप पर पीडीटी डीबगर क्लाइंट से बात करने की ज़रूरत है, और लैपटॉप पर पीडीटी डीबगर क्लाइंट को भी सर्वर पर एक्सडेबग से बात करने की ज़रूरत है, और केवल एक पोर्ट नंबर है (9 000), इसलिए मुझे स्थानीय बंदरगाह 9000 को रिमोट पोर्ट 9000 में अग्रेषित करने की आवश्यकता है, और रिमोट पोर्ट 9000 को स्थानीय पोर्ट 9000 में भी अग्रेषित करना है; मैं यातायात की दिशा को भ्रमित कर रहा था जिसके साथ क्लाइंट एक विशिष्ट पोर्ट से एक (द्वि-दिशात्मक) कनेक्शन शुरू कर रहा है जो सर्वर पक्ष सुन रहा है।

ऐसा प्रतीत होता था कि लैपटॉप पर चल रहे पीडीटी डीबगर कनेक्शन बनाने के लिए लिनक्स पर चल रहे एक्सडेबग के लिए प्रतीक्षा कर रहे थे। चूंकि मैं वास्तव में ऐसी परिस्थिति के बारे में सोच नहीं सकता था जहां Xdebug को पोर्ट 9000 को सुनना होगा, पीडीटी डीबगर को कनेक्शन शुरू करने की प्रतीक्षा करनी होगी (बल्कि यह पीडीटी डीबगर के लिए एक कनेक्शन पर एक कमांड भेजने के लिए इंतजार कर रहा था पहले से ही अपने शुरुआती बंदरगाह 9000 द्वारा स्थापित किया गया था जब उसने अनुरोध में XDEBUG_SESSION पैरामीटर देखा था), मैंने केवल स्थानीय बंदरगाह 9000 को रिमोट पोर्ट 9000 में अग्रेषित करने से छुटकारा पाने का फैसला किया। मैंने ऐसा किया, और अचानक पीडीटी को प्राप्त हो रहा था लिनक्स सर्वर से कनेक्शन भेजा गया, और डीबगिंग सामान्य रूप से वहां से आगे बढ़ी।

लेकिन मेरे दिमाग में अभी भी स्पष्ट नहीं है क्यों अतिरिक्त अग्रेषण वास्तव में एक समस्या का कारण बनता है। विभिन्न मेजबानों पर कार्यक्रमों की एक जोड़ी के लिए ऐसा संभव नहीं हो सकता है कि राज्य के आधार पर, कभी-कभी श्रोता और कभी-कभी दूसरा होता? जब तक अग्रेषण उन्हें दोनों एक ही पोर्ट पर एक ही समय में सुनने की कोशिश नहीं करता है, तो मुझे उम्मीद है कि यह ठीक रहेगा।

नीचे की रेखा यह है कि अब मेरे द्वारा किए गए सरलीकरण के कारण चीजें काम कर रही हैं, लेकिन मैं समझना चाहता हूं कि अनियंत्रित जटिलता वास्तव में एक समस्या क्यों हुई। मैंने the O'Reilly book में एसएसएच और सुरंग के उत्कृष्ट स्पष्टीकरण सहित बहुत सी चीजें पढ़ी हैं, लेकिन मुझे अभी भी यह नहीं मिला है।

+0

नींद के बाद, मुझे लगता है कि मैं देख सकता हूं कि लैपटॉप की तरफ एक समस्या थी, जिसमें स्थानीय फॉरवर्ड ने एसएस को बंदरगाह 9000 पर कनेक्शन सुनने के लिए प्रेरित किया। तो जब पीडीटी ने डीबग कॉन्फ़िगरेशन लॉन्च किया और पोर्ट 9000 पर एक्सडीईबीयूजी के लिए सुनना शुरू किया, जिसने उसी पोर्ट पर दो श्रोताओं को बनाया, जो एक त्रुटि है। अगर ऐसा हो रहा है, तो मुझे केवल यह समझने में समस्या है कि डायग्नोस्टिक्स कैसे दर्शाता है: दोनों पुटी और एसएसडीडी लॉग रिमोट एंड पर एक समस्या का संकेत देते हैं। पीडीटी ने शिकायत क्यों नहीं की जब उसने 9000 पर सुनने की कोशिश की, जबकि एसएसएच पहले से ही इस पर सुन रहा था? – sootsnoot

+4

बस एक ही मुद्दे से पकड़ा गया - यह याद रखना महत्वपूर्ण है कि आपका आईडीई "सर्वर" के रूप में कार्य कर रहा है, जिसमें यह पोर्ट 9 000 पर PHP Xdebug प्रक्रिया से कनेक्शन की प्रतीक्षा कर रहा है। इस प्रकार आप एक सुरंग जो दूरस्थ सर्वर के बंदरगाह को आगे बढ़ाती है 9 000 आपकी स्थानीय मशीनों के पोर्ट 9000 में जहां आपका आईडीई सुन रहा है। मैक पर, यह ssh -R 9000 है: 127.0.0.1: 9000 [email protected] –

+0

और यह एक एसएस कमांड कहां टाइप करेगा? क्या यह कहीं नेटबीन्स सेटिंग्स में जाता है? – user658182

संबंधित मुद्दे