के साथ नहीं मारा मैं बहुत हताश और विचारों से बाहर चल रहा हूँ:ब्रेकप्वाइंट xdebug, PhpStorm और Laravel 3/mod_rewrite
मैं एक Laravel 3 परियोजना के लिए xdebug और PhpStorm कॉन्फ़िगर कर दिया है। मैक ओएस एक्स अपाचे पर स्थानीय रूप से प्रोजेक्ट चला रहा है, इसलिए उसी मशीन पर phpStorm और वेब एप्लिकेशन चलाया जाता है। वर्चुअल होस्ट को कॉन्फ़िगर किया गया ताकि स्थानीयहोस्ट.एलटी लैरवेल की सार्वजनिक निर्देशिका को इंगित करे।
php.ini में प्रासंगिक xdebug प्रविष्टियों:
zend_extension = /usr/lib/php/extensions/no-debug-non-zts-20090626/xdebug.so
[xdebug]
xdebug.idekey="PHPSTORM"
xdebug.remote_enable=1
xdebug.profiler_enable=1
xdebug.remote_log=/var/log/xdebug_remote.log
xdebug.remote_connect_back=1
पुष्टि की है कि विस्तार लोड हो जाता है।
किसी भी पथ मैपिंग के बिना एक PHP वेब अनुप्रयोग डीबग/रन कॉन्फ़िगरेशन सेट करें क्योंकि कुछ भी सिम्लिंक नहीं है और वेब सर्वर पर फ़ोल्डर्स और phpStorm के फ़ोल्डर्स बिल्कुल वही हैं (जैसा कि वेब सर्वर एक ही मशीन पर है)।
जब आईडीई से "डीबग" के माध्यम से शुरू करने, xdebug_remote.log सही ढंग से ब्रेकपाइंट हम आवेदन/पुस्तकालयों में फ़ाइलों में से एक में सेट किया है पता चलता है:
<- breakpoint_set -i 5 -t line -f
file:///Users/RalfR/src/livetime/application/libraries/LiveTime.php -n 676
->
<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="http://xdebug.org/dbgp/xdebug" command="breakpoint_set" transaction_id="5" id="9230016"></response>
हालांकि, जब हम एक लिंक पर क्लिक करें कि LiveTime.php लाइब्रेरी से फ़ंक्शन को आमंत्रित करता है, ब्रेकपॉइंट हिट नहीं होता है। लॉग दिखाता है:
<- stack_get -i 6 ->
<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="http://xdebug.org/dbgp/xdebug" command="stack_get" transaction_id="6"><stack where="{main}" level="0" type="file" filename="file:///Users/RalfR/src/livetime/public/index.php" lineno="14"></stack></response>
<- run -i 7 ->
<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="http://xdebug.org/dbgp/xdebug" command="run" transaction_id="7" status="stopping" reason="ok"></response>
<- run -i 8
Log closed at 2013-04-22 21:03:57
के रूप में कई व्यवस्थाएं, Laravel सार्वजनिक/index.php के माध्यम से पाइप सब कुछ करने के लिए .htaccess mod_rewrite का उपयोग करता है। यह phpStorm/xdebug के लिए कारण/लाइब्रेरी/LiveTime.php में ब्रेकपॉइंट को पकड़ने का कारण नहीं हो सकता है क्योंकि यह xdebug को लगता है कि LiveTime.php स्क्रिप्ट कभी निष्पादित नहीं होती है?
यदि हां, तो हम इस समस्या को कैसे हल कर सकते हैं?
इसके अलावा, xdebug_break(); हमेशा काम करता है, इसलिए यह किसी गलत कॉन्फ़िगर किए गए PHP वातावरण से संबंधित नहीं है। – Ralf
मुझे इसका उत्तर भी जानना अच्छा लगेगा! – kreeves
मेरे पास एक ही समस्या है, केवल मैं सिम्फनी का उपयोग कर रहा हूं और यह कुछ फ़ाइलों में टूट जाता है लेकिन दूसरों को नहीं। xdebug_break(); हर जगह काम करता है। – greg