1 votes

Comment déboguer un service web écrit en PHP ?

J'ai une bonne question ici :)

J'ai besoin de déboguer mon service web écrit en PHP. Son client est écrit en C#.
Après quelques jours de recherche, je me suis rendu compte que ce n'était pas une tâche facile. En tout cas, il semble que personne ne connaisse la bonne solution.

Quel est le problème, en fait ?
Nous disposons de deux bibliothèques populaires de débogage PHP : PHP Debugger de NuSphere et l'extension XDebug.
Le problème est qu'ils sont tous deux contrôlés à partir de la chaîne de requête de l'URL ou à l'aide de cookies. Par exemple, pour activer le débogage avec PHP Debugger, vous devez ajouter le paramètre ?DBGSESSID=xxx à votre URL ou avoir un cookie DBGSESSID.
Mais lorsque votre service web est appelé par un client externe, ce dernier n'a pas de cookie et n'ajoute pas le paramètre url DBGSESSID. Alors comment déboguer dans cette situation ?

PS. Je ne veux pas écrire dans des fichiers journaux, voir les en-têtes/données de demande et de réponse ou quelque chose comme ça. Je veux un débogage normal, étape par étape, et des points d'arrêt.

Quelqu'un ?

3voto

nightcoder Points 4604

Eh bien, je me réponds à moi-même. Si nous utilisons PHPEd & DBG, alors nous pouvons utiliser la fonction magique DebugBreak().

Assurez vous que PHPEd & PHP DBG Listenere sont en cours d'exécution, écrivez

DebugBreak('1@127.0.0.1');

n'importe où dans le code de votre werbservice, faites un appel depuis le client, et voilà ! - vous êtes en PHPEd sur cette ligne en mode débogage !

0voto

Michael B. Points 2912

J'utilise le plugin Poster pour aider à déboguer mon Webservice php

Edit :

J'ai trouvé un meilleur outil pour déboguer un service web : Application client REST avancée

Il s'agit d'un plugin pour Chrome, qui permet de tester toutes sortes de services web utilisant REST.

0voto

St. John Johnson Points 4163

Vous pouvez écrire les données dans un fichier journal (meh) .

Ou afficher les informations de débogage dans les en-têtes de réponse (si le client peut les voir). Mais pour ce qui est de l'utilisation des points d'arrêt, vous n'avez peut-être pas de chance.

Vous pouvez également chercher à détourner la connexion sur votre ordinateur local (quelque chose de similaire à l'add-on Tamper Data de Firefox), où vous pouvez interrompre la requête et ajouter le paramètre url.

0voto

Joseph Mastey Points 17871

Essayez SoapUI pour émettre des requêtes manuellement et obtenir les réponses détaillées. Je ne sais pas si vous pouvez falsifier le cookie, mais vous pouvez contrôler les points de terminaison, et donc l'URL dans une certaine mesure.

0voto

user262976 Points 1232

Vous pouvez définir xdebug.remote_autostart à 1 pour toujours déboguer (pas de paramètre de requête nécessaire). cela pourrait être limité à certaines url avec la directive <Location> ou <Files>.

Ou simplement enregistrer quelques informations de débogage (en utilisant Zend_Log ou Pear Log si vous voulez une bibliothèque générique) en utilisant var_export.

La façon rapide et sale est :

file_put_contents('/tmp/log1.txt',
  var_export(array($_REQUEST, $something), true));

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X