Maison >développement back-end >tutoriel php >Débogage multi-session à distance pour PHP
Cet article vous présente principalement des informations pertinentes sur le débogage multi-session à distance PHP. L'article le présente en détail à travers des exemples de codes et d'images. Il a une certaine valeur d'apprentissage de référence pour les études ou le travail de chacun. Apprenons ensemble avec l'éditeur.
1. Introduction au contexte
Cet article présente principalement le contenu pertinent sur le débogage multi-session à distance PHP. référence. Veuillez vous y référer pour référence. Je ne dirai pas grand-chose ci-dessous. Jetons un coup d'œil à l'introduction détaillée :
Quel problème est résolu : Débogage de points d'arrêt de plusieurs projets, www. Le projet mysite.com appellera L'interface REST du projet api.mysite.com rend plus pratique le débogage direct de l'interface dans le projet api.mysite.com lorsqu'une action est déclenchée sous le projet www.mysite.com.
À quels scénarios convient-il : Débogage inter-projets, débogage à distance, plus pratique et plus facile à utiliser que le simple var_dump.
2. Configuration du débogage à distance
Environnement Nginx+PHP-fpm, configurer l'extension php.ini
[Xdebug] zend_extension = /usr/local/php56/lib/php/extensions/no-debug-non-zts-20131226/xdebug.so xdebug.remote_enable=1 remote_handler=dbgp xdebug.remote_host=localhost xdebug.remote_port=9000 xdebug.idekey=XDEBUG
Remarque : Que le php de l'environnement CLI et le php de fpm utilisent des fichiers de configuration php.ini différents, vous devez configurer le php correspondant à fpm .ini
Vérifiez si la configuration est correcte
Mappez le port 9000 distant (hôte fpm 10.99.1.185) sur le port local 9000 :
ssh -CNg -R 9000:localhost:9000 root@10.99.1.185
Après avoir installé openssh localement, vous pouvez directement utiliser la commande ssh
Vous pouvez voyez sur le serveur que le port 9000 est occupé par ssh
PHPSTORM doit également configurer Xdebug, configurer plusieurs sessions de débogage pour qu'elles soient activées en même temps, le port 9000 et accepter demandes externes.
Configurer le mappage de chemin lié au projet, le nom de domaine, le port
3. Configuration du débogage inter-sessions (projet)
Le cœur du débogage inter-projets est d'envoyer les conditions qui déclenchent le débogage Xdebug en tant que paramètres à projet api.mysite.com ou d'autres projets ultérieurs.
Le code du projet www est le suivant :
frontend.php
<?php $personJson = file_get_contents('http://api.mysite.com/backend.php'); $person = json_decode($personJson); var_dump($person);
Le code du projet api est le suivant :
backend .php
<?php class Person { public $Name; public $Email; } $person = new Person(); $person->Name = "Maarten"; $person->Email = "maarten.balliauw@jetbrains.com"; echo json_encode($person);
Vous devez modifier le projet www et ajouter les paramètres de requête réseau requis par xdebug pour déclencher le débogage à distance :
<?php $debuggingQuerystring = ''; if (isset($_GET['XDEBUG_SESSION_START'])) { // xdebug $debuggingQuerystring = 'XDEBUG_SESSION_START=' . $_GET['XDEBUG_SESSION_START']; } if (isset($_COOKIE['XDEBUG_SESSION'])) { // xdebug (cookie) $debuggingQuerystring = 'XDEBUG_SESSION_START=PHPSTORM'; } if (isset($_GET['start_debug'])) { // zend debugger $debuggingQuerystring = 'start_debug=' . $_GET['start_debug']; } $personJson = file_get_contents('http://api.mysite.com/backend.php?' . $debuggingQuerystring); $person = json_decode($personJson); var_dump($person);
Les projets privés peuvent ajouter des paramètres de cookie dans la classe générale d'encapsulation des requêtes réseau :
curl_setopt($this->ch, CURLOPT_COOKIE, "XDEBUG_SESSION=XDEBUG");
4. Processus de débogage
Assurez-vous que le les paramètres de débogage ont été transmis à l'interface API
Augmenter le nombre de sessions pouvant être déboguées en même temps
Activer la surveillance du débogage et activer Xdebug côté serveur
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!