Haltepunkte keine Treffer mit xdebug, PhpStorm und Laravel 3 / mod_rewrite
Ich bin ziemlich verzweifelt und langsam die Ideen aus:
Habe ich konfiguriert xdebug und PhpStorm für Laravel 3-Projekt. Ausgeführt wird das Projekt lokal auf Mac OS X, Apache, so PhpStorm und die web-Anwendung auf der gleichen Maschine laufen. Konfiguriert einen virtuellen host, so dass "localhost".lt Punkte zu Laravel öffentlichen Verzeichnis.
Relevanten xdebug Einträge 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
Bestätigt, dass die Erweiterung geladen wird.
Einrichten einer PHP-Web-Anwendung Debuggen /ausführen-Konfiguration ohne Pfad-mappings als nichts ist symlinked und die Ordner auf dem web-server und PhpStorm sind genau die gleichen (wie der Webserver auf der gleichen Maschine).
Beim Start über "Debug" aus der IDE-xdebug_remote.log korrekt zeigt den Haltepunkt haben wir in einer der Dateien in application/libraries:
<- 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>
Jedoch, wenn wir auf einen link klicken, ruft die Funktion aus der LiveTime.php Bibliothek, der Haltepunkt erreicht wird. Das log zeigt:
<- 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
Als viele frameworks, Laravel verwendet .htaccess mod_rewrite zu pipe alles durch public/index.php. Kann dies die Ursache für PhpStorm /xdebug nicht fangen die breakpoint in application/libraries/LiveTime.php wie es scheint, dass die xdebug LiveTime.php script wird nie ausgeführt?
Wenn ja, wie können wir dieses problem lösen?
- Auch, xdebug_break(); funktioniert immer, so dass es nicht mit einem falsch konfigurierten PHP-Umgebung.
- Ich würde gerne wissen, die Antwort auf diese als gut!
- Ich habe das exakt gleiche Problem, nur ich bin mit Symfony und es bricht in einige Dateien, andere aber nicht. xdebug_break(); funktioniert überall.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Müssen Sie die Pfadzuordnungen Sie nicht benötigen, um es für jede Datei. Zu beheben mein Problem, ich ging auf die IntelliJ (gleich für PHPStorm) Einstellungen - > PHP > Server ausgewählt .. meine server und legen Sie die folgenden (siehe Hinweis 2 unten):
HINWEIS 1: ich konnte auch den Pfad direkt in das Projekt root, aber da bin ich nicht interessiert Debuggen etwas anderes als meine Laravel Ordner "öffentlich" und meine Bewerbung, ich nur setzen Sie die Pfade für jene, die 2 Ordner. Nach diesem funktionierte alles perfekt.
HINWEIS 2: Das Bild oben ist nicht von der "Einstellungen" - dialog im Sinne der oben genannten Schritte, sondern aus dem "Resovle-Pfad-Zuordnung-Problem" - dialog präsentiert, die Sie mit der gleichen map-Zuordnungen-widget, das die gleiche Weise funktioniert. Befestigungen, die Einstellungen an beiden Orten arbeiten. Der Resolve-Path-Mapping-Problem-dialog wird angezeigt, wenn Sie keine server-debug-Einstellungen, um mit zu beginnen und die IDE erkennt ein mapping-problem, an welchem Punkt wird es auch die server-Einstellungen für Sie.
if
else
Blöcke nicht eingewickelt in die geschweiften Klammern nicht über den code, der zwischen den geschweiften Klammern, break für break Punkte.In meinem Fall, die Ursache der "
breakpoint_set
" /"command is not available
" problem wurde deaktiviertxdebug.extended_info
option (standardmäßig ist es aktiviert aber ich habe es deaktiviert, die für die Profilerstellung).Haltepunkte funktionieren nicht, dann
xdebug.extended_info
wird deaktiviert.Ich habe Haltepunkte arbeitete nach neuaktivieren
xdebug.extended_info
.Für diejenigen, die mit Netbeans und Laravel, müssen Sie die "Web-Root" - wie Sie Ihre öffentlichen Ordner, die in deinem Projekt->Eigenschaften->Quellen.