XDebug propose la directive de configuration "xdebug.profiler_enable_trigger" qui permet d'activer le profilage en passant le paramètre GET ou POST "XDEBUG_PROFILE" lors de l'appel d'un script via HTTP. C'est pratique si vous ne voulez pas de 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 PHP en ligne de commande? J'ai essayé de passer le "XDEBUG_PROFILE" comme argument de ligne de commande mais cela n'a pas fonctionné.
En général, le profilage PHP en ligne de commande fonctionne bien, mais j'aimerais avoir la même flexibilité par appel qu'avec un navigateur et un serveur HTTP.
Aucune suggestion?
la source
Réponses:
Vous pouvez passer des paramètres INI avec le
-d
drapeau:php -d xdebug.profiler_enable=On script.php
.la source
alias phpp="php -d xdebug.profiler_enable=1"
. De cette façon, lorsque vous ne souhaitez pas profiler, utilisez simplementphp
et lorsque vous utilisezphpp
.alias xphp="php -d xdebug.profiler_enable=On -d xdebug.profiler_output_dir=."
. Cela stocke toujours la sortie de débogage dans votre répertoire de travail actuel.phpp.cmd
répertoire PATH un fichier, contenantphp -d xdebug.profiler_enable=On %*
ensuite vous pouvez simplement l'exécuterphpp <args>
.J'ai obtenu ce travail sur Ubuntu / Netbeans par:
Ensuite, il s'agit simplement de commencer le débogage dans les netbeans et de faire "php myscript.php" sur la ligne de commande.
la source
avec PhpStorm sur un serveur web distant j'utilise cette commande:
où
server_name
représente le nom du serveur dans la configuration du projet PhpStormla source
alias xphp="XDEBUG_CONFIG="idekey=PHPSTORM" PHP_IDE_CONFIG="serverName=example.com" php -d memory_limit=1G -d xdebug.remote_host=
echo $ SSH_CLIENT | cut -d \ "= \" -f 2 | awk '{print $ 1}'"
donc quand je veux déboguer j'utilise xphp au lieu de phpComme décrit sur la page de débogage à distance de Xdebug , le profilage peut également être activé via la
XDEBUG_CONFIG
variable d'environnement en incluant une directive "profile_enable = 1":la source
Processus similaire, mais différent, pour le faire fonctionner avec Netbeans lors du développement sur une machine virtuelle.
Vous devez passer le drapeau activé à distance, le drapeau de démarrage automatique, le drapeau IDE et le nom de votre hôte distant.
la source
J'ai créé un script shell pour gérer le débogage client.
nom du script: phpdebug
J'ai placé ce script
/usr/bin
et lui ai 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, $ * à la fin.
la source
XDEBUG_CONFIG
variable d'environnement. Rien que cela et lexdebug.remote_host
cadre l'ont fait fonctionner.Dans PhpStorm 7 à l'aide de WAMP, j'ai réussi à le faire en copiant mes paramètres xdebug déjà opérationnels de C: \ wamp \ bin \ apache \ apache2.2.22 \ bin \ php.ini vers la section xdebug de C: \ wamp \ bin \ php \ phpX.YZ \ php.ini. Ensuite, j'ai exécuté mon script comme ceci:
Cela a même fonctionné pour le débogage de scripts d'artisan laravel
la source
Documentation de Jetbrains
Pour démarrer le script avec le débogage à l'aide des commutateurs de ligne de commande PHP Définissez une variable d'environnement qui dirait à XDebug de se connecter à l'IDE:
Windows / MacOS / Linux
Ici, idekey doit avoir une valeur aléatoire.
Lancez PHP avec les options de ligne de commande suivantes:
Vous pouvez utiliser 10.0.2.2 au lieu de 127.0.0.1 avec Vagrant (voir la question SO connexe).
la source