2013-09-16 7 views
6

मैं phpStorm, xdebug और nginx + php-fpm के साथ दूरस्थ डीबग का उपयोग करता हूं। GET पैरामीटर में XDEBUG_SESSION_START=my_ide_key पास करते समय Nginx 502 त्रुटि कोड (खराब गेटवे) के साथ repsond। उसी समय आईडीई में मेरा कोड ब्रेकपॉइंट ठीक काम करता है। जब मैं XDEBUG_SESSION_START पैरामीटर nginx पास नहीं करता है तो अच्छी तरह से स्वरूपित HTML और कोड 200 के साथ प्रतिक्रिया देता है। लेकिन इस पैरामीटर के बिना स्पष्ट यह कोई डिबगिंग नहीं है।Xdebug कुकी XDEBUG_SESSION सेट कई बार

nginx त्रुटि लॉग में मैं अपस्ट्रीम से प्राप्त बड़े हेडर के बारे में अधिसूचनाएं देखता हूं।

Set-Cookie: XDEBUG_SESSION=666; expires=Mon, 16-Sep-2013 16:07:28 GMT; path=/ 

मैं जब इस हेडर पर प्रदर्शित होने वाले खोजने की कोशिश: मैं php-एफ पी एम और nginx और सिर्फ एक अलग बात है के बीच संचार डंप करने की कोशिश एक Set-Cookie हैडर है। और मैंने पाया कि मेरी स्मार्ट प्लगइन Smarty_Internal_Template विध्वंसक (मेरी स्टार्टअप स्क्रिप्ट की अंतिम कोड लाइन के बाद) अगर मैं headers_list() पर कॉल करता हूं तो मुझे सेट-कुकी हेडर (बराबर विनाशक कॉल और सेट-कुकी हेडर राशि) की बढ़ती मात्रा दिखाई देती है। मुझे यकीन है कि मेरे कोड में कोई भी स्पष्ट header('Set-Cookie: XDEBUG_SESSION=...') कॉल नहीं है। मैं xdebug संस्करण को अपग्रेड और डाउनग्रेड करने का प्रयास करता हूं लेकिन अभी भी वही व्यवहार है। पर कोड Smarty_Internal_Template पर मेरी समस्या हल करती है लेकिन वह बदसूरत हैक है!

इस अजीब स्थिति के बारे में कोई विचार?

+1

कुछ अतिरिक्त जानकारी: ऐसा लगता है कि प्रत्येक सेट शटडाउन फ़ंक्शन के लिए 'सेट-कुकी' हेडर को कॉल किया जाता है (जब से मैंने अपने शटडाउन फ़ंक्शंस के निष्पादन के माध्यम से कदम उठाने पर देखा)। मेरे मामले में Smarty का उपयोग नहीं किया जा रहा है। ऐसा लगता है कि यह सिर्फ एक php-shutdown-function-in-normal चीज़ है। – jdunk

+1

एक और विषमता जो संबंधित हो सकती है या नहीं भी हो सकती है: 'headers_list()' मुझे यह भी दिखाता है कि * XDEBUG_SESSION के लिए * * * सेट-कुकी 'हेडर पहले से ही मेरे PHP कोड के लाइन 1 द्वारा सेट किए गए हैं। – jdunk

उत्तर

1

मैं इस मामले में XDEBUG_SESSION_START का उपयोग न करने का सुझाव दूंगा। मेरे लिए ऐसा लगता है कि XDEBUG_SESSION_START कुकी सेट करने के लिए सर्वर पक्ष पर कुछ कोड निष्पादन को ट्रिगर कर रहा है। और यह smarty टेम्पलेट कोड में हस्तक्षेप कर रहा है।

PHPStorm के साथ मेरा अनुभव के सभी में, मैं ने पाया है कि सबसे अच्छा तरीका है xdebug को चालू करने के बुकमार्कलेट, आप यहाँ उत्पन्न कर सकते हैं, जिसके माध्यम से है:

https://www.jetbrains.com/phpstorm/marklets/

बुकमार्कलेट में कुकी सेट ब्राउज़र ही इसलिए, XDEBUG_SESSION और पथ चर सेट करने के लिए सर्वर में कोई कोड निष्पादित नहीं किया गया है और जो स्मार्ट कोड के साथ हस्तक्षेप को कम या समाप्त कर सकता है।

इसके अलावा, PHPStorm के साथ एक टिप यह सुनिश्चित करना है कि PHPStorm ऊपर और चल रहा है और नेटवर्क कनेक्शन PHPStorm और php-fpm के बीच ठीक से काम कर रहा है (मुझे लगता है कि आप nginx के साथ संयोजन में उपयोग कर रहे हैं)।

यदि php-fpm PHPStorm से कनेक्ट नहीं हो सकता है, तो मेरे अनुभव में, कोड अंततः सर्वर पर निष्पादित होगा लेकिन यह बहुत धीमा हो जाएगा।

कुछ बार ऐसा हुआ है जब मैंने इसे प्रदर्शन की समस्या के रूप में गलत तरीके से देखा है और बहुत समय बर्बाद कर दिया है।

+0

मुझे डर है कि मैं आपके उत्तर को सत्यापित या मूल्यांकन भी नहीं कर सकता क्योंकि मैं अब PHP पर नहीं हूं। इसलिए, मैं बाउंटी-स्टार्टर @jdunk से कोई टिप्पणी प्राप्त करना चाहता हूं। –

+1

@Devang, जबकि मैं प्रयास की सराहना करता हूं, यह वास्तव में सवाल का जवाब नहीं देता है, जो "इन अतिरिक्त 'सेट-कुकी' हेडर्स को शटडाउन समय में क्यों जोड़ा जा रहा है?" हालांकि यह सच है कि जीईटी परम के बजाय कुकी का उपयोग करने के परिणामस्वरूप उन अतिरिक्त शीर्षकों का उत्पादन नहीं किया जा रहा है, इसके लिए कुकी का उपयोग करने की आवश्यकता है, और कुकीज़ दृढ़ता के लिए हैं।जीईटी परम का उपयोग करना "केवल यह अनुरोध" कहने का एकमात्र तरीका है, उदाहरण के लिए, जब कोई ब्राउज़र कई अन्य अनुरोधों को बंद कर देता है जो php द्वारा संसाधित होते हैं, तो कोई भी पहले अनुरोध से परे डीबगर लूप में फंस नहीं जाता है । – jdunk

+1

बक्षीस पोस्ट करने का उद्देश्य विशेष रूप से xdebug और/या उन शीर्षकों को क्यों सेट किया जा रहा है अंतर्दृष्टि के लिए था। मेरे पास अपना खुद का कामकाज है, और @ ओस्ट्रोव्स्की ने अपने प्रश्न में एक प्रदान किया। बक्षीस कुछ हद तक संतोषजनक उत्तर के लिए है: उन xdebug शीर्षकों के यांत्रिकी। – jdunk

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