2015-12-08 13 views
6

से PHP सीएलआई स्क्रिप्ट को डीबग कैसे करें क्या कोई जानता है कि सीएलआई से सीएलआई PHP स्क्रिप्ट को डीबग कैसे करें?! मैं एक PHP वेब पेज डीबग नहीं करना चाहता - मेरे पास PHP वेब पेज नहीं है। मैं रिमोट स्क्रिप्ट को डीबग नहीं करना चाहता हूं - मैं इस सिस्टम पर यहां चल रहा/डिबगिंग कर रहा हूं। मैं नहीं चाहता (इस समय) एक सीएलआई PHP डीबग करने के लिए कुछ आईडीई (ग्रहण, पीएचस्टॉर्म या जो कुछ भी) प्राप्त करने का प्रयास करें, बल्कि मैं लिनक्स कमांड लाइन पर कुछ PHP सीएलआई स्क्रिप्ट को डीबग करना चाहता हूं। पर्ल में यह केवल perl -d <script.pl> < विकल्प > होगा। मेरे लिए एक स्क्रिप्ट डिबग करना, संकलन त्रुटियों या अन्य साधारण चीजों को समझ नहीं रहा है। मेरे लिए यह ब्रेक पॉइंट्स सेट कर रहा है, कोड चला रहा है, वैरिएबल की सामग्री की जांच कर रहा है और डिबगर पर मनमाने ढंग से निष्पादित या eval ('< php code >') करने में सक्षम है।सीएलआई

निश्चित रूप से बाद में मैं इसे अपनी पसंद के आईडीई में कॉन्फ़िगर करना चाहता हूं (इस समय यह ग्रहण है) लेकिन मैं इसे काम करने में कामयाब नहीं रहा हूं। सीएलआई से डीबगिंग एक PHP सीएलआई स्क्रिप्ट मेरे लिए एक अच्छी शुरुआत होगी।

धन्यवाद।

मुझे नहीं पता कि मैं टिप्पणी पोस्ट करते समय एक चरित्र गणना तक सीमित क्यों हूं। शायद मैं यहां और अधिक टेक्स्ट जोड़ सकता हूं।

यहाँ है कि मैं क्या आदेश ग्रहण के साथ xdebug और/या Zend डिबगर का उपयोग करने के कोशिश की है है:

  • बेस ग्रहण संस्करण Mars.1 रिलीज 4.5।
  • ग्रहण पीडीटी यूआई प्लगइन संस्करण 3.7.0.2015112
  • pecl इंस्टॉल xdebug का उपयोग कर xdebug इंस्टॉल करने का प्रयास किया। कहते हैं कि मुझे php.ini में "zend_extension = xdebug.so" जोड़ने की आवश्यकता है। वास्तव में? कौन सा php.ini? मैं कई है:

Andromeda:sudo find/-xdev -name php.ini /etc/php5/cli/php.ini /etc/php5/apache2/php.in /opt/eclipse/plugins/org.zend.php.debug.debugger.linux.x86_64_5.3.18.v20110322/resources/php53/php.ini /opt/eclipse/plugins/org.zend.php.debug.debugger.linux.x86_64_5.3.18.v20110322/resources/php5/php.ini /opt/eclipse/plugins/com.zend.php.debug.debugger.php56.linux.x86_64_13.0.1.v20151112-2045/resources/php56/php.ini Andromeda:

  • मैं दोनों /etc/php5/cli/php.ini और /etc/php5/apache2/php.ini में zend_extension बात डाल दिया। एक phpinfo.php पेज बनाया और मैं वहां Xdebug देखता हूँ (हाँ!)।

    • मैं भी Zend डिबगर स्थापित किया था

    Launching renameUser has encountered a problem. An internal error occurred during "Launching renameUser" java.lang.NullPointerException.

    ओह goodie ... और कहा कि उन्हीं दो php के लिए निम्न ग्रहण में एक डीबग विन्यास कॉन्फ़िगर xdebug का उपयोग करें और डिबग करने की कोशिश करने के लिए .ini फ़ाइलों:

zend_extension=/usr/lib/php5/20121212/ZendDebugger.so zend_debugger.allow_hosts=127.0.0.1/32, 192.168.0.0/16 zend_debugger.expose_remotely=always

  • बदला गया डिबग विन्यास टी ओ ज़ेंड डीबगर का उपयोग करें और डीबग करने का प्रयास किया। प्राप्त:

Error launching 'renameUser' The debug session could not be started. Please make sure that the debugger is properly configured as a php.ini directive.

  • को पुन: प्रारंभ ग्रहण और अब डिबगर को चलाने के लिए प्रयास करता है, लेकिन बस एक 255 से बाहर निकलें मूल्य /opt/eclipse/plugins/org.zend.php.debug.debugger चलाने का प्रयास के साथ समाप्त हो जाता है। linux.x86_64_5.3.18.v20110322/संसाधन/PHP5/php-cgi। यह रनइन क्यों है php-cgi मेरे बाहर है। मैंने कहा कि यह एक सीजीआई नहीं है जो सीजीआई है।किसी भी घटना में मैं निम्नलिखित जब कमांड लाइन से इस भागने की कोशिश कर मिलती है:

Andromeda:/opt/eclipse/plugins/org.zend.php.debug.debugger.linux.x86_64_5.3.18.v20110322/resources/php5/php-cgi /opt/eclipse/plugins/org.zend.php.debug.debugger.linux.x86_64_5.3.18.v20110322/resources/php5/php-cgi: error while loading shared libraries: libiconv.so.2: cannot open shared object file: No such file or directory

  • मिले /opt/eclipse/plugins/org.zend.php.debug में एक libiconv.so.2 .debugger.linux.x86_64_5.3.18.v20110322/संसाधन/lib और इसे शामिल करने के लिए LD_LIBRARY_PATH सेट करें, लेकिन यह सुनिश्चित करने के लिए कि यह डीबगर को php.ini निर्देश के रूप में ठीक से कॉन्फ़िगर किया गया है, यह सब कुछ डीबगर लॉन्च करने में विफल रहता है ... UGH !

अन्य अजीब सामान:

  • जब ग्रहण शुरू होता है यह इस प्रकार पिछले रन खाली
  • ग्रहण नहीं करेगा बाहर निकलने के रूप में से बफ़र्स संपादित प्रदर्शित मेरी RSE आधारित परियोजना को खोलने के लिए विफल रहता है! फ़ाइल का चयन करें: बाहर निकलें। कुछ नहीं हुआ। टाइटल बार में एक्स पर क्लिक करें - कुछ भी नहीं होता है। अब मुझे इसे बंद करने के लिए इसे मारना है!

उत्तर

0

किसी PHP स्क्रिप्ट में ब्रेक पॉइंट सेट करने में सक्षम होने के कारण किसी प्रकार का डीबगर एक्सटेंशन लोड हो रहा है, या तो XDebug या Zend Debugger।

और फिर आपको ब्रेक पॉइंट्स के बारे में अपनी इच्छाओं को जानने के लिए इस डीबगर में किसी प्रकार का इंटरफ़ेस चाहिए। मैं पर्ल डीबगिंग से अपरिचित हूं, लेकिन मैंने किसी भी PHP सीएलआई आधारित डिबगिंग के बारे में नहीं सुना है - यह हमेशा एक आईडीई में होता है जो एक्सटेंशन में से किसी एक के डिबगिंग प्रोटोकॉल को संभालने में सक्षम होता है।

बेशक अच्छी पुरानी var_dump();die('hi'); डिबगिंग है, लेकिन इसमें स्क्रिप्ट समाप्त होने के बाद निरंतर कोड निष्पादन शामिल नहीं है। ;)

+0

पर्ल में आप बस का कहना है कि पर्ल -d script.pl अलावा कुछ भी नहीं करने के लिए Vdebug extention (vim के लिए xdebug) के साथ विम का उपयोग करें। डीबगर बेक किया गया है और बस काम करता है। क्यों PHP मदद की जरूरत है मेरे बाहर है! इसे डिबगिंग की आवश्यकता क्यों है "प्रोटोकॉल" गूंगा लगता है या कम से कम उस परिस्थिति के लिए अतिव्यापी है जहां आप केवल एक सीएलआई स्क्रिप्ट लिख रहे हैं। पर्ल में डीबगर "एक्सटेंशन" बस perl5db.pl है। जब-डी निर्दिष्ट किया गया है पर्ल बस डीबगर लोड करता है और फिर इसे कॉल करता है। व्हायोला आप डिबगिंग कर रहे हैं! एक सीएलआई डीबग सत्र में इंटरफ़ेस कमांड लाइन है! यह और क्या होगा? –

+0

ठीक है, इसलिए मेरे पास ग्रहण है (4.4 आईआईआरसी और मैं खुद उबंटू 14.10 पर हूं और जिस स्क्रिप्ट को मैं डीबग करने की कोशिश कर रहा हूं उसे अंततः सेंटोस 5.6 पर चलाने की आवश्यकता होगी) और मैंने ज़ेंड डीबगर और एक्सडीबग चीज़ दोनों को स्थापित करने का प्रयास किया। न तो काम किया। ग्रहण शुरू करने के लिए पूछे जाने पर या तो किसी भी चीज को ग्रहण करने के लिए कहा गया था कि डीबगर सही तरीके से कॉन्फ़िगर नहीं किया गया था। शायद अगर आप मुझे सटीक दे सकते हैं, चरण-दर-चरण निर्देश मैं शायद ऐसा करने में सक्षम हो। मुझे याद है कि यह मुझे अपने वेब सर्वर की रूट पर dummy.php डालने के लिए कह रहा है। खैर मेरे पास कोई वेब सर्वर नहीं है क्योंकि मेरे पास कोई वेब ऐप नहीं है जिसे मैं डीबीजी करने की कोशिश कर रहा हूं। –

+0

मेथिंक, पीएचपी के बावजूद कि यह सीएलआई काम करने के लिए ठीक है, कि PHP सीएलआई विकास के लिए विशेष रूप से डीबगिंग के क्षेत्र में उपयुक्त है। और var_dump और die चीजों को डीबग करने का एक भयानक तरीका है! मैं विक्रेता से PHP सामान चलाने की कोशिश कर रहा हूं और इसका उपयोग करने के तरीके को समझने के लिए अपने कोड में और उसके माध्यम से कदम उठाना चाहता हूं। मैं अपने कोड के माध्यम से var_dumps सभी नहीं डाल सकता है। (टिप्पणी के आकार को सीमित करना - गूंगा) –

9

जब कमांड लाइन आप PHP बताने के लिए आप भी

http://xdebug.org/docs/remote

डिबग करने के लिए चाहते हैं की जरूरत है पर डिबगिंग कहते

export XDEBUG_CONFIG="idekey=session_name" 
php myscript.php 

संभालने xdebug सक्षम है (यह ऐसा मामला है जिस .ini नहीं करता इसके अंदर फ़ाइल करें, लेकिन इसके लिए प्रति ओएस मानक मानक है, आमतौर पर xdebug.ini नामक conf.d फ़ोल्डर में जो ऑटो शामिल है)

थी एस आपको एक cmdline स्क्रिप्ट डीबग करने की अनुमति देता है।

व्यक्तिगत तौर पर मैं डिबग और एक कमांड लाइन की जरूरत है

+0

मैंने कोशिश की लेकिन यह काम नहीं किया। यह टिप्पणी वाक्यविन्यास काम नहीं करता है। क्षमा करें, मैंने कोशिश की। एंड्रोमेडा: निर्यात XDEBUG_CONFIG = "idekey = session_name" एंड्रोमेडा: php renameUser.php बनाना उपयोगकर्ता कुंजी वस्तु हो गया p4 संबंध बनाना पीएचपी गंभीर त्रुटि: इंटरफ़ेस पी 4 \ कनेक्शन का दृष्टांत नहीं कर सकता \ ConnectionInterface/opt/जबरदस्ती/झुंड/renameUser लाइन 24 PHP स्टैक ट्रेस पर 0 एफपी: PHP 1. {मुख्य}() /opt/perforce/swarm/renameUser.phpft एंड्रोमेडा: –

+0

डीबग सिम्फनी कंसोल कमांड के लिए पूरी तरह से काम करता है – Korsmakolnikov