Sono abbastanza disperato e corto di idee:punti di interruzione non ha colpito con xdebug, PhpStorm e laravel 3/mod_rewrite
Ho configurato xdebug e PhpStorm per un progetto laravel 3. Eseguendo il progetto localmente su Mac OS X Apache, PhpStorm e l'applicazione Web vengono eseguiti sulla stessa macchina. Configurato un host virtuale in modo che localhost.lt punti alla directory pubblica di Laravel.
voci Xdebug rilevanti in php.ini:
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
confermato che l'estensione viene caricato.
Configurare una configurazione di debug/esecuzione di applicazioni Web PHP senza mappature dei percorsi poiché nulla è simulato e le cartelle sul server Web e PhpStorm sono esattamente uguali (poiché il server Web si trova sulla stessa macchina).
Quando si lancia tramite "Debug" dall'IDE, xdebug_remote.log mostra correttamente il punto di interruzione abbiamo impostato in uno dei file di applicazione/biblioteche:
<- 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>
Tuttavia, quando si fa clic su un link che richiama la funzione dalla libreria LiveTime.php, il punto di interruzione NON viene colpito. Il registro mostra:
<- 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
Come molti quadri, laravel utilizza mod_rewrite di .htaccess a tutto tubo attraverso pubblico/index.php. Che questa sia la causa per PhpStorm/xdebug che non cattura il breakpoint in application/libraries/LiveTime.php come sembra a xdebug che lo script LiveTime.php non venga mai eseguito?
Se sì, come possiamo risolvere questo problema?
Inoltre, xdebug_break(); funziona sempre, quindi non è correlato a un ambiente PHP mal configurato. – Ralf
Mi piacerebbe anche sapere la risposta a questo! – kreeves
Ho esattamente lo stesso problema, solo io sto usando Symfony e si rompe in alcuni file ma non in altri. xdebug_break(); funziona ovunque – greg