XDebug propose la directive de configuration "xdebug.profiler_enable_trigger" qui permet d'activer le profilage en passant le GET ou POST "XDEBUG_PROFILE" lors de l'appel d'un script via HTTP. C'est pratique si vous ne voulez pas profilage pour TOUS vos scripts mais seulement pour quelques cas particuliers sans toujours changer votre configuration PHP.
Existe-t-il un moyen d'obtenir le même comportement pour les programmes en ligne de commande PHP?)? J'ai essayé de passer le "XDEBUG_PROFILE" en tant qu'argument en ligne de commande, mais cela n'a pas fonctionné.
En général, la ligne de commande de profilage PHP fonctionne bien, mais j'aimerais disposer de la même souplesse au moment des appels que pour un navigateur et un serveur HTTP.
Aucune suggestion?
Vous pouvez passer les paramètres INI avec le -d
drapeau: php -d xdebug.profiler_enable=On script.php
.
Je travaille sur Ubuntu/Netbeans par:
Ensuite, il suffit de démarrer le débogage dans Netbeans et de faire "php myscript.php" sur la ligne de commande.
avec PhpStorm sur le serveur web distant, j'utilise cette commande:
XDEBUG_CONFIG="idekey=PHPSTORM" PHP_IDE_CONFIG="serverName=server_name" php -dxdebug.remote_Host=`echo $SSH_CLIENT | cut -d "=" -f 2 | awk '{print $1}'` myscript.php
où server_name
représente le nom du serveur dans la conifuguration du projet PhpStorm
Comme décrit sur la page Xdebug Remote Debugging , le profilage peut également être activé via la XDEBUG_CONFIG
variable d’environnement en incluant une directive "profile_enable = 1":
XDEBUG_CONFIG="profiler_enable=1" php ...
Processus similaire mais différent pour le faire fonctionner avec Netbeans lors du développement sur une machine virtuelle.
Vous devez transmettre l'indicateur activé à distance, l'indicateur de démarrage automatique, l'indicateur ide et le nom de votre hôte distant.
php -dxdebug.remote_enable=1 -dxdebug.remote_autostart=On -dxdebug.idekey=netbeans-xdebug -dxdebug.remote_Host=NAME.OF.Host script.php
J'ai créé un script shell pour gérer le débogage du client.
nom du script: phpdebug
#!/usr/bin/ksh
php -dxdebug.remote_Host=`echo $SSH_CLIENT | cut -d "=" -f 2 | awk '{print $1}'` $*
J'ai placé ce script dans /usr/bin
et lui a donné des autorisations d'exécution.
Le script prend les arguments passés dans phpdebug et appelle php avec les arguments xdebug et ajoute les arguments passés dans le script Shell, le $ * à la fin.
Dans PhpStorm 7 en utilisant WAMP, cela a fonctionné en copiant mes paramètres xdebug déjà actifs dans C:\wamp\bin\Apache\apache2.2.22\bin\php.ini vers la section xdebug de C:\wamp\bin\php\phpX.YZ\php.ini. Puis j'ai couru mon script comme suit:
php -d xdebug.idekey=PHPSTORM script.php
Cela a même fonctionné pour le débogage laravel scripts artisanaux
php -d xdebug.idekey=PHPSTORM artisan db:seed --force
Pour démarrer le script avec le débogage à l'aide de PHP commutateurs de ligne de commande, définissez une variable d'environnement qui indiquerait à XDebug de se connecter à l'EDI:
Windows/MacOS/Linux
export XDEBUG_CONFIG="idekey=123"
Ici, idekey devrait avoir une valeur aléatoire.
Lancez PHP avec les options de ligne de commande suivantes:
php -dxdebug.remote_enable=1 -dxdebug.remote_mode=req -dxdebug.remote_port=9000 -dxdebug.remote_Host=127.0.0.1 -dxdebug.remote_connect_back=0 path/to/script.php
Vous pouvez utiliser 10.0.2.2 au lieu de 127.0.0.1 avec Vagrant (voir connexe SO question).