Xdebug: [Step Debug] Impossibile connettersi al client di debug
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
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
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