2017-03-16 1 views
0

J'essaye de configurer Xdebug pour qu'il fonctionne avec Sublime Text 3 mais je ne peux rien afficher dans les onglets Context, Watch ou Stack, par exemple. en définissant un point d'arrêt et en cliquant sur Démarrer le débogage (Lancer le navigateur). Le navigateur ouvre le fichier index.php avec ?XDEBUG_SESSION_START=sublime.xdebug ajouté à l'url mais l'exécution du code ne s'arrête pas lorsque le point d'arrêt est atteint.Configuration de Xdebug (PHP) path_mapping et php.ini pour Sublime3

J'ai aussi essayé d'ajouter xdebug_break() à index.php sans aucun effet. De ce que j'ai lu, en spécifiant path_mapping dans le fichier .sublime-project semble la solution la plus probable. Les documentation stipule que:

path_mapping

Pour le débogage à distance pour résoudre les emplacements des fichiers, il est nécessaire de configurer le mappage de chemin avec le chemin du serveur comme chemin de clé et local en tant que valeur.

J'utilise IIS sous Windows 10 si les fichiers de l'application sont stockés dans C:\inetpub\wwwroot\ et l'URL de la page d'accueil est http://localhost/index.php que je suis en supposant que le chemin du serveur et chemin local, respectivement, et en tant que tel le fichier .sublime-project ressemble à ceci :

{ 
    "folders": 
    [ 
     { 
      "path": "." 
     } 
    ], 
    "settings": { 
     "xdebug": { 
      "url": "http://localhost/index.php", 
      "path_mapping" : {"C:\\inetpub\\wwwroot\\" : "http://localhost/index.php"} 
     } 
    } 
} 

Est-ce correct? Si c'est le cas, mon fichier php.ini est-il configuré correctement?

[ExtensionList] 
. 
. 
. 
zend_extension = "C:\Program Files (x86)\PHP\php-5.6.30-nts-Win32-VC11-x86\ext\php_xdebug-2.5.1-5.6-vc11-nts.dll" 

[XDEBUG] 
xdebug.default_enable=1 
xdebug.remote_autostart=0 
xdebug.remote_connect_back=1 
xdebug.remote_enable=1 
xdebug.remote_handler=dbgp 
xdebug.remote_port=9000 
xdebug.remote_host=localhost 
+1

* "que je suppose être le chemin du serveur et le chemin local respectivement" * NON - cela n'a rien à voir avec l'URL. Les mappages de chemin doivent être utilisés lorsque le ** chemin de fichier ** distant ne correspond pas au chemin local, par ex. Sur le site de l'ordinateur local, 'index.php' se trouve dans'/var/www/'mais sur remote il se trouve dans'/var/www/html/nom-de-site/'. Collectez les journaux xdebug pour voir ce qui se passe. – LazyOne

+0

Merci de bien vouloir @LazyOne problème maintenant résolu à l'aide de votre commentaire. – gbavba

Répondre

0

Le path_mapping et paramètres php.ini étaient tous deux incorrects.

Basé sur le commentaire de @ LazyOne, enlevé le path_mapping incorrect dans le fichier .sublime-project il ressemble maintenant à ceci:

{ 
    "folders": 
    [ 
     { 
      "path": "." 
     } 
    ], 
    "settings": { 
     "xdebug": { 
      "url": "http://localhost/index.php" 
     } 
    } 
} 

ensuite ajouté xdebug.remote_log="C:\Windows\Temp\Xdebug\remote.log"-php.ini et inspecter le journal a montré:

I: Remote address found, connecting to ::1:9000. 
E: Time-out connecting to client. :-(

La recherche de cette erreur conduit à la réponse de @ Axel à SO question et à partir de là, a changé xdebug.remote_connect_back=1 à xdebug.remote_connect_back=0 à php.ini

points d'arrêt, puis a commencé à travailler et le contexte , Regarder et Stack onglets commencé à montrer les données pertinentes sur les atteindre.

+0

Donc le problème était que le support de xdebug dans Sublime ne supporte pas IPv6 .. donc il doit être IPv4? Comment la session réussie apparaît-elle dans le journal xdebug? Je veux dire - ce IP: port auquel il est capable de se connecter? – LazyOne

+0

'localhost: 9000' affiche' I: Connexion à l'adresse/port configurée: localhost: 9000.' puis 'I: Connecté au client. :-) ' – gbavba