Xdebug: [Step Debug] Impossibile connettersi al client di debug

Nov 17 2020

Vorrei provare Xdebug 3.0.0RC1 per esplorare cosa è cambiato e le nuove funzionalità che ne derivano. Sto anche usando l'ultimo PhpStorm 2020.3 EAP che supporta Xdebug 3 senza bisogno di grandi configurazioni. Di seguito è riportata la mia configurazione PhpStorm per il debugger:

Ed ecco la configurazione che ho provato per Xdebug3:

zend_extension=/usr/local/lib/php/extensions/no-debug-non-zts-20170718/xdebug.so
xdebug.mode=debug
xdebug.start_with_request=yes
xdebug.client_host=host.docker.internal # here I tried several combinations like: "localhost", "127.0.0.1", "172.17.0.1"
xdebug.client_port=9001 # here I tried several ports 9003 included with no success

Ho anche provato a non aggiungere affatto l' client_host/client_portimpostazione e ancora non riesco .

Ricevo questo errore:

Script php bin/console doctrine:cache:clear-metadata returned with error code 255
!!  [17-Nov-2020 15:24:40 UTC] Xdebug: [Step Debug] Could not connect to debugging client. Tried: host.docker.internal:9001 (through xdebug.client_host/xdebug.client_port) :-(
!!  [17-Nov-2020 15:24:41 UTC] PHP Fatal error:  Method class@anonymous::__toString() must not throw an exception, caught Symfony\Component\DependencyInjection\Exception\AutowiringFailedException:  in /var/www/vendor/symfony/symfony/src/Symfony/Component/DependencyInjection/Compiler/AutowirePass.php on line 233

Alcune informazioni sul mio ambiente:

  • Fedora 33
  • Docker versione 19.03.13, build 4484c46d9d
  • PhpStorm 2020.3 EAP Build # PS-203.5784.36

È curioso (perché apparentemente host.docker.internal"non" è supportato dalla versione Docker che sto usando eppure funziona) e strano allo stesso tempo che la seguente configurazione funzioni con Xdebug 2 anche se il debugger ascolta continuamente le connessioni in entrata:

zend_extension=/usr/local/lib/php/extensions/no-debug-non-zts-20170718/xdebug.so
xdebug.remote_autostart=0
xdebug.remote_enable=1
xdebug.remote_host=host.docker.internal
xdebug.remote_port=9000

Cosa mi manca qui?

Nota: ho già applicato la soluzione fornita dallo sviluppatore Xdebug qui .

Risposte

6 AGriboed Dec 18 2020 at 17:26


Docker PHP 7.4
PHPStorm 2020.1
Xdebug 3.1.0

Installa Xdebug nel tuo contenitore Docker usando Dockerfile

RUN pecl install xdebug-3.0.1 && docker-php-ext-enable xdebug

Configura php.ini con quanto segue:

[xdebug]
xdebug.mode = debug
xdebug.start_with_request = yes
xdebug.discover_client_host = 1

Vai a PHPStorm - Impostazioni - PHP - Debug - Xdebug e imposta la porta su 9003 (per impostazione predefinita)

PHPStorm

Questo è tutto (:

Se vuoi abilitare / disabilitare il debugger solo quando ne hai bisogno: installa semplicemente un'estensione del browser chiamata "Xdebug helper", seleziona "Debug" e rimuovi "xdebug.start_with_request = yes" da php.ini

[xdebug]
xdebug.mode = debug
xdebug.discover_client_host = 1
1 ReynierPM Nov 18 2020 at 02:01

Inizierò a ringraziare moltissimo @LazyOne che ha passato un po 'di tempo ad aiutarmi su questo fino a quando non lo faremo funzionare. Ecco come appare la configurazione per me attualmente e funziona bene:

zend_extension=/usr/local/lib/php/extensions/no-debug-non-zts-20170718/xdebug.so
xdebug.mode=debug
xdebug.client_port=9005

È inoltre necessario aggiornare la porta Xdebug su File | Settings | Languages & Frameworks | PHP | Serversper riflettere quella nuova, ma abilitare anche l'opzione per ascoltare le connessioni in entrata Xdebug3. (Credo che sia abilitato di default in PhpStorm 2020.3)

Questa è la configurazione per un progetto di backend in cui nessun browser è nel mezzo, non ho provato ma per quelli, potresti aver bisogno di:

xdebug.start_with_request=yes

E hanno anche File | Settings | Languages & Frameworks | PHP | Serversben configurato.

Nota: Abbiamo trovato il padrone di casa aveva permesso IPv6 e ho disabilitato e, inoltre, ha aggiunto la seguente impostazione per l'IDE attraverso Help > Edit Custom VM options: -Djava.net.preferIPv4Stack=true. Dopo aver aggiunto l'impostazione IP4 all'IDE non ho provato a riattivare IPv6 e vedere se Xdebug 3 funziona ancora