2016-10-29 10 views
10

अनदेखा में PHP प्लगइन के साथ एक ड्रूपल वेबसाइट डीबग करने का प्रयास कर रहा है (phpStorm में समान होगा)।इंटेलिजे, पीएचस्टॉर्म: एक्सडीबीयूजी के साथ डीबगिंग XDEBUG_SESSION कुकी

क्रोम ब्राउज़र एक स्थानीय होस्ट उर्फ ​​mydomain.local और XDebug हेल्पर एक्सटेंशन स्थापित किया और डीबग करने के लिए सेट कर दिया जाता की ओर इशारा करते:

मैं निम्नलिखित सेटअप है। कुकीज़ के तहत डेवलपर टूल्स में मैं देख सकता हूं कि XDEBUG_SESSION कुकी PHPSTORM पर सेट है।

मैं xdebug निम्नलिखित सेटिंग्स का उपयोग प्लगइन के साथ php कॉन्फ़िगर किया है:

xdebug.extended_info = 1 
xdebug.idekey = "PHPSTORM" 
xdebug.max_nesting_level = 500 
xdebug.remote_autostart = 1 
xdebug.remote_connect_back = 0 
xdebug.remote_enable = 1 
xdebug.remote_handler = dbgp 
xdebug.remote_host = 127.0.0.1 
xdebug.remote_mode = req 
xdebug.remote_port = 9000 

इंटेलीजे में मैं सेटअप एक सर्वर मुझे लगता है कि सर्वर का उपयोग कर रहा हूँ और इदे कुंजी निर्धारित किया है mydomain.local करने और चलाने के विन्यास में ओर इशारा करते हुए PHPSTORM पर।

अगर मैं PHP स्क्रिप्ट में पहली पंक्ति में तोड़ सक्षम करें, फिर डिबगर तुरंत index.php अंदर पहले भंगुर स्थान पर टूट जाता है:

अब मुद्दा यह है। अगर मैं उस विकल्प को अक्षम करता हूं, तो मुझे एक चेतावनी मिलती है कि कोई ब्रेकपॉइंट मारा नहीं गया था, भले ही मेरे पास ब्रेक पॉइंट सेट है और मुझे यकीन है कि कोड निष्पादित किया जा रहा है। ?XDEBUG_SESSION_START=PHPSTORM तो मेरे सारे breakpoints ठीक से IntelliJ में breaked किया जा रहा है: अगर मैं स्पष्ट रूप से निम्नलिखित क्वेरी पैरामीटर संलग्न के साथ एक URL का उपयोग

Debug session was finished without being paused 
It may be caused by path mappings misconfiguration or not synchronized 
local and remote projects. 
To figure out the problem check path mappings configuration for 
'mydomain.local' server at PHP|Servers or enable Break at first line in 
PHP scripts option (from Run menu). 

अब: चेतावनी है कि मैं देख रहा हूँ इस तरह दिखता है।

प्रश्न:XDEBUG_SESSION कुकी को अनदेखा क्यों किया जा रहा है?

अद्यतन:

PHP 7.0.8-0ubuntu0.16.04.3 (cli) (NTS) 
Copyright (c) 1997-2016 The PHP Group 
Zend Engine v3.0.0, Copyright (c) 1998-2016 Zend Technologies 
    with Zend OPcache v7.0.8-0ubuntu0.16.04.3, Copyright (c) 1999-2016, 
    by Zend Technologies 
    with Xdebug v2.4.0, Copyright (c) 2002-2016, by Derick Rethans 

और मेरे अपाचे आभासी मेजबान विन्यास:

<VirtualHost *:80> 
    DocumentRoot /var/www/html/mydomain 
    ServerName mydomain.local 
    <Directory /var/www/html/mydomain> 
     Options Indexes FollowSymLinks 
     AllowOverride All 
     Order allow,deny 
     Allow from all 
    </Directory> 

    ErrorLog /var/log/apache2/mydomain.log 
</VirtualHost> 

अद्यतन 2:php -v से मेरे PHP और XDebug संस्करण उत्पादन जोड़ा मैं एक php एक्सटेंशन स्थापित किया गया है जिसे fpm कहा जाता है। मुझे पूरा यकीन नहीं है कि यह क्यों स्थापित है या मुझे इसकी आवश्यकता है। मुझे लगता है कि यह स्वचालित रूप से PHP के साथ स्थापित किया गया था। क्या यह दखल दे सकता है?

+0

क्या आपने 'remote_autostart' को 0 पर सेट करने का प्रयास किया है? यदि आप कुकी सेट करके डिबगिंग सक्षम करना चाहते हैं तो यह विकल्प 1 पर सेट करना अनावश्यक लगता है। –

+0

इसके अलावा, आपका xdebug संस्करण क्या है? –

+0

जांचें कि क्या आपकी वेबसाइट कुछ रीडायरेक्ट करता है, जो कि आप कहां से उम्मीद कर रहे हैं तो इसे तोड़ने का कारण हो सकता है। हालांकि ऐसा लगता है कि यह मामला नहीं है क्योंकि जब आप GET पैरामीटर जोड़ते हैं तो यह काम करता है। – user5542121

उत्तर

0

चूंकि यह पता चला कि समस्या इंटेलिजे या पीएचस्टॉर्म में नहीं थी, बल्कि ड्रूपल विशिष्ट थी। विशेष रूप से मुझे सभी कैशिंग अक्षम करने की आवश्यकता थी।

लेख Disable Drupal 8 caching during development आलेख को विस्तार से बताता है।

कैशिंग को अक्षम करने के बाद ड्रूपल सब कुछ अपेक्षित काम करता था।

3

मेरे पास यह समस्या तब होती थी जब मेरे पास "अधिक कॉन्फ़िगर किया गया" मेरा सेटअप होता है।

  1. आप
  2. क्रोम है कि प्लगइन की सेटिंग पर जाएं और PhpStorm चयन को जोड़ने के बाद XDebug helper extension जोड़ने का प्रयास करना चाह सकते हैं:

XDebug Helper Settings

  1. अपने xdebug कॉन्फ़िगरेशन को केवल इन मानों पर स्ट्रिप करने का प्रयास करें:

(मेरी बॉक्स पर काम करता है)

zend_extension=xdebug.so 
xdebug.remote_enable=1 
xdebug.remote_port=9000 
  1. PhpStorm config डीबग पोर्ट 9000 और [X] शामिल बाहरी कनेक्शन स्वीकार कर सकते हैं करना चाहिए:

PhpStorm Xdebug Settings

  1. तो फिर तुम पर PhpStorm में डिबग कनेक्शन को सुन होना चाहिए:

PhpStorm Debug Listening

  • इसके अलावा डिबगिंग आपके ब्राउज़र में (xdebug सहायक के माध्यम से) सक्षम
      :

    Xdebug helper Debug

    1. यदि बग आइकन हरा xdebug helper debugging on है, तो यदि आप पृष्ठ को रीफ्रेश करते हैं, तो आपको जाने के लिए अच्छा होना चाहिए, और PhpStorm को पहले ब्रेकपॉइंट पर रोकना चाहिए।
  • 0

    आप एफ पी एम और nginx, शायद आप fastcgi_pass FastCGI सर्वर जो डिफ़ॉल्ट रूप से बंदरगाह 9000 पर काम करता है के लिए निर्दिष्ट का उपयोग करते हैं। यदि ऐसा है, तो Xdebug के लिए एक और नि: शुल्क बंदरगाह सेट करें, उदाहरण के लिए 9009

    1

    मुझे वर्चुअल मशीन के अंदर कोड डीबग करते समय PHPStorm 9 में एक ही समस्या थी। लेकिन पहले आप सवाल करते हैं:

    प्रश्न: XDEBUG_SESSION कुकी को अनदेखा क्यों किया जा रहा है?

    उत्तर: मैं वास्तव में नहीं जानता कि लेकिन मैं के आधार पर है कि यह काम करता है जब आप स्पष्ट रूप से ?XDEBUG_SESSION_START=PHPSTORM निर्दिष्ट या "पहली पंक्ति पर तोड़", यह आने वाले अनुरोध की अनदेखी कर रहा है पर शक। यह काम करेगा लेकिन ब्रेक पॉइंट्स पर रुकें क्योंकि ऐसा लगता है कि वर्तमान अनुरोध के लिए इसकी आवश्यकता नहीं है।

    मेरे समाधान

    क्या मदद मिली मुझे, रिमोट होस्ट नाम/आईपी xdebug को जोड़ने किया गया था जब ब्राउज़र कॉल के लिए डिबगिंग। या export कमांड लाइन से डीबग करते समय सेटिंग करते हैं।

    xdebug के लिए।आरं

    xdebug.remote_host=mydomain.local; 
    xdebug.remote_connect_back = On 
    

    कमांड लाइन के उपयोग के लिए:

    export PHP_IDE_CONFIG=serverName=mydomain.local; php -dxdebug.remote_autostart=1 -dxdebug.remote_connect_back=1 -dxdebug.remote_host=mydomain.local ./script.php 
    

    फिर path mapping की स्थापना। ऐसा करने के लिए Settings पर जाएं ->Languages & Frameworks ->PHP ->Server। वहां आपके द्वारा सेट किए गए सर्वर का चयन करें उदा। mydomain.local यदि मौजूदा है और पोर्ट 80 और XDEBUG के साथ होस्ट नाम के रूप में mydomain.local दर्ज करें। अब "पथ मैपिंग का उपयोग करें" की जांच करें और अपने index.php या किसी अन्य यूनिक प्रविष्टि बिंदु पर स्क्रॉल करें जिसे आप ब्राउज़र से प्राप्त कर सकते हैं। अगला वाला बेवकूफ लगता है लेकिन मेरे लिए काम करता है। यदि आपका index.php/home/lanoxx/project/index.php के अंतर्गत स्थित है उसी "सर्वर पर पूर्ण पथ" के अंतर्गत स्थान दर्ज करें। फिर index.php फ़ाइल में ब्रेकबॉइंट सेट करें और ब्राउज़र से लोड पेज सेट करें।

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