Drush-Skript kann mit Xdebug / Phpstorm nicht am Haltepunkt angehalten werden

6

Ich hatte dies auf einer anderen Drupal-VM, aber aus irgendeinem Grund kann ich es nicht mehr zum Laufen bringen. Ich versuche, ein Drush-Migrationsskript zu debuggen, und ich habe einige Haltepunkte eingefügt, aber es hört nie an den Haltepunkten auf. Ich habe die hier gezeigten Schritte befolgt .

Hier ist mein Xdebug-Abschnitt von config.yml von Vagrant:

# XDebug configuration. XDebug is disabled by default for better performance.
php_xdebug_default_enable: 1
php_xdebug_coverage_enable: 1
php_xdebug_cli_enable: 1
php_xdebug_remote_enable: 1
php_xdebug_remote_connect_back: 1
php_xdebug_remote_host: xxx.xxx.xx.xx // My Vagrant IP is really here.
# Use PHPSTORM for PHPStorm, sublime.xdebug for Sublime Text.
php_xdebug_idekey: PHPSTORM
php_xdebug_max_nesting_level: 256

Die Webserver-Debug-Validierung zeigt, dass alles in Ordnung ist. Ich habe auch überprüft, dass beim Debuggen einer Seite, die ich über einen Browser besuche, diese an Unterbrechungspunkten stoppt, sodass sie mit Sicherheit funktioniert.

Außerdem hat die PHP-CLI Xdebug:

PHP 7.0.14-2+deb.sury.org~xenial+1 (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.14-2+deb.sury.org~xenial+1, Copyright (c) 1999-2016, by Zend Technologies
    with Xdebug v2.5.0, Copyright (c) 2002-2016, by Derick Rethans

Eine Sache, die mir aufgefallen ist, ist, dass ich, wenn ich Phpstorm so einstelle, dass es in der ersten Zeile des PHP-Skripts unterbrochen wird, im Debugger den folgenden Hinweis bemerkt habe: Die Quellposition kann nicht berechnet werden. Das Skript 'drush.phar' ist keinem Textdateityp zugeordnet.

Hier ist das Xdebug-Protokoll:

Log opened at 2017-03-24 02:21:50
I: Connecting to configured address/port: 10.0.2.2:9000.
I: Connected to client. :-)
-> <init xmlns="urn:debugger_protocol_v1" xmlns:xdebug="http://xdebug.org/dbgp/xdebug" fileuri="file:///var/www/mysite/web/drush.phar" language="PHP" xdebug:language_version="7.0.14-2+deb.sury.org~xenial+1" protocol_version="1.0" appid="12759" idekey="18466"><engine version="2.5.0"><![CDATA[Xdebug]]></engine><author><![CDATA[Derick Rethans]]></author><url><![CDATA[http://xdebug.org]]></url><copyright><![CDATA[Copyright (c) 2002-2016 by Derick Rethans]]></copyright></init>

<- feature_set -i 1 -n show_hidden -v 1
-> <response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="http://xdebug.org/dbgp/xdebug" command="feature_set" transaction_id="1" feature="show_hidden" success="1"></response>

<- feature_set -i 2 -n max_depth -v 1
-> <response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="http://xdebug.org/dbgp/xdebug" command="feature_set" transaction_id="2" feature="max_depth" success="1"></response>

<- feature_set -i 3 -n max_children -v 100
-> <response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="http://xdebug.org/dbgp/xdebug" command="feature_set" transaction_id="3" feature="max_children" success="1"></response>

<- status -i 4
-> <response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="http://xdebug.org/dbgp/xdebug" command="status" transaction_id="4" status="starting" reason="ok"></response>

<- step_into -i 5
-> <response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="http://xdebug.org/dbgp/xdebug" command="step_into" transaction_id="5" status="break" reason="ok"><xdebug:message filename="file:///var/www/mysite/web/drush.phar" lineno="8"></xdebug:message></response>

<- breakpoint_set -i 6 -t line -f file:///var/www/mysite/web/modules/contrib/migrate_tools/migrate_tools.drush.inc -n 226
-> <response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="http://xdebug.org/dbgp/xdebug" command="breakpoint_set" transaction_id="6" id="127590001"></response>

<- breakpoint_set -i 7 -t line -f file:///var/www/mysite/web/core/modules/field/src/Plugin/migrate/source/d6/FieldInstance.php -n 22
-> <response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="http://xdebug.org/dbgp/xdebug" command="breakpoint_set" transaction_id="7" id="127590002"></response>

<- breakpoint_set -i 8 -t line -f file:///var/www/mysite/web/core/modules/field/src/Plugin/migrate/source/d6/FieldInstance.php -n 56
-> <response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="http://xdebug.org/dbgp/xdebug" command="breakpoint_set" transaction_id="8" id="127590003"></response>

<- breakpoint_set -i 9 -t line -f file:///var/www/mysite/web/core/modules/field/src/Plugin/migrate/source/d6/FieldInstance.php -n 37
-> <response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="http://xdebug.org/dbgp/xdebug" command="breakpoint_set" transaction_id="9" id="127590004"></response>

<- stack_get -i 10
-> <response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="http://xdebug.org/dbgp/xdebug" command="stack_get" transaction_id="10"><stack where="{main}" level="0" type="file" filename="file:///var/www/mysite/web/drush.phar" lineno="8"></stack></response>

<- run -i 11
Log opened at 2017-03-24 02:21:51
I: Connecting to configured address/port: xxx.xxx.xx.xx:9000.
W: Creating socket for 'xxx.xxx.xx.xx:9000', poll success, but error: Operation now in progress (29).
E: Could not connect to client. :-(
Log closed at 2017-03-24 02:21:51

Irgendwelche Ideen, was ich versuchen kann, damit es funktioniert?

Update - Dinge, die ich versucht habe

  • Zerstören Sie die Vagabundmaschine und beginnen Sie von vorne
  • Unterschiedliche Kombination von Xdebug-Einstellungen in config.yml (Standardmäßig festlegen, remote_host entfernen, localhost hinzufügen usw.)
  • Ändern des Ports auf 9001 (sowohl PHPStorm als auch Vagrant)
albertski
quelle

Antworten:

3

Ich hatte gerade dieses Problem. Es ist passiert, weil ich Drush Launcher verwendet habe ( https://github.com/drush-ops/drush-launcher ). Dieses Tool ermöglicht die Eingabe von "drush" in Ihr Drupal-Verzeichnis anstelle von "./vendor/bin/drush", scheint jedoch xdebug zu verwirren. Die Verwendung von "./vendor/bin/drush" hat das Problem behoben.

Yann
quelle
Dies brachte mich auf den richtigen Weg, ich musste auch eine Umgebungsvariable im Container export PHP_IDE_CONFIG="serverName=MyServer"festlegen : wobei MyServer der Name des Servers in Einstellungen / Sprachen & Frameworks / PHP / Server ist, auf dem Sie Ihre
Pfadzuordnung vornehmen