J'ai essayé d'exécuter la commande CLI suivante:
phpunit -d xdebug.profiler_enable=on XYZTestCase.php
mais ça fonctionne comme d'habitude. Est-ce que quelqu'un peut-il me montrer la bonne direction?? THX!
Voici les paramètres XDebug:
xdebug
xdebug support => enabled
Version => 2.1.2
Supported protocols => Revision
DBGp - Common DeBuGger Protocol => $Revision: 1.145 $
Directive => Local Value => Master Value
xdebug.auto_trace => Off => Off
xdebug.collect_assignments => Off => Off
xdebug.collect_includes => On => On
xdebug.collect_params => 0 => 0
xdebug.collect_return => Off => Off
xdebug.collect_vars => Off => Off
xdebug.default_enable => On => On
xdebug.dump.COOKIE => no value => no value
xdebug.dump.ENV => no value => no value
xdebug.dump.FILES => no value => no value
xdebug.dump.GET => no value => no value
xdebug.dump.POST => no value => no value
xdebug.dump.REQUEST => no value => no value
xdebug.dump.SERVER => no value => no value
xdebug.dump.SESSION => no value => no value
xdebug.dump_globals => On => On
xdebug.dump_once => On => On
xdebug.dump_undefined => Off => Off
xdebug.extended_info => On => On
xdebug.file_link_format => no value => no value
xdebug.idekey => Nam => no value
xdebug.manual_url => http://www.php.net => http://www.php.net
xdebug.max_nesting_level => 100 => 100
xdebug.overload_var_dump => On => On
xdebug.profiler_aggregate => Off => Off
xdebug.profiler_append => Off => Off
xdebug.profiler_enable => Off => Off
xdebug.profiler_enable_trigger => Off => Off
xdebug.profiler_output_dir => c:/wamp/tmp => c:/wamp/tmp
xdebug.profiler_output_name => cachegrind.out.%t.%p => cachegrind.out.%t.%p
xdebug.remote_autostart => On => On
xdebug.remote_connect_back => Off => Off
xdebug.remote_cookie_expire_time => 3600 => 3600
xdebug.remote_enable => On => On
xdebug.remote_handler => dbgp => dbgp
xdebug.remote_Host => localhost => localhost
xdebug.remote_log => no value => no value
xdebug.remote_mode => req => req
xdebug.remote_port => 9000 => 9000
xdebug.scream => Off => Off
xdebug.show_exception_trace => Off => Off
xdebug.show_local_vars => Off => Off
xdebug.show_mem_delta => Off => Off
xdebug.trace_format => 0 => 0
xdebug.trace_options => 0 => 0
xdebug.trace_output_dir => \ => \
xdebug.trace_output_name => trace.%c => trace.%c
xdebug.var_display_max_children => 128 => 128
xdebug.var_display_max_data => 512 => 512
xdebug.var_display_max_depth => 3 => 3
Le paramètre xdebug.profiler_enable
ne peut pas être modifié à l'exécution mais uniquement au début du script.
Exécuter phpunit -d foo=bar
mènera simplement à l'appel de phpunit ini_set("foo", "bar");
et cela ne fonctionnera pas car la valeur ne peut pas changer à l'exécution.
Voir: xdebug.profiler_enable
Active le profileur de Xdebug qui crée des fichiers dans le répertoire de sortie du profil. Ces fichiers peuvent être lus par KCacheGrind pour visualiser vos données. Ce paramètre ne peut pas être défini dans votre script avec ini_set (). Si vous souhaitez activer le profileur de manière sélective, définissez xdebug.profiler_enable_trigger sur 1 au lieu d'utiliser ce paramètre.
php -d xdebug.profiler_enable=on /usr/bin/phpunit XYZTestCase.php
En appliquant le paramètre directement à l'exécution PHP et non à phpunit, il sera défini avant le script démarre et devrait fonctionner.
J'ai passé des heures à essayer de faire en sorte que cela fonctionne. Pense que cela peut changer ma vie si!
Au départ, j’essayais de faire cela (c’est-à-dire d’exécuter phpunit) à l’intérieur d’une boîte vagabonde, mais j’ai réalisé qu’il était plus facile (et plus rapide en termes de performances) de l’exécuter en dehors de la boîte vagabonde.
Tout d’abord, j’ai utilisé brew install php55 php55-xdebug
en utilisant un homebrew sur un Mac (mais votre configuration peut être différente et elle devrait quand même fonctionner). Mon site est un projet symfony2.
J'essayais de suivre ceci: phpunit vagrant xdebug pour le faire fonctionner depuis une boîte vagabonde (y suis presque arrivé mais avec quelques problèmes).
Ces paramètres ont fonctionné pour moi (site en cours d'exécution à partir d'une boîte de dialogue, mais phpunit en dehors de la boîte de courrier):
#xdebug.ini (parent machine, not inside vagrant box).
[xdebug]
zend_extension="/usr/local/Cellar/php55-xdebug/2.2.6/xdebug.so" #this will be different on your machine and will probably already be set
xdebug.max_nesting_level = 250
xdebug.default_enable = 1
xdebug.idekey = "PHPSTORM" #seems to work without this too
xdebug.remote_enable = 1
Puis lancer ceci en ligne de commande (ici, j'utilise un téléchargement de phpunit au lieu de celui lié à/usr/local/bin (qui ne semble pas fonctionner))
XDEBUG_CONFIG="idekey=PHPSTORM" bin/phpunit -c app
Ou vous pouvez créer un fichier appelé phpunit-debug (pour stocker la variable d’environnement XDEBUG_CONFIG) comme indiqué ici: phpunit xdebug
Avez-vous essayé de:
redémarrez votre serveur
Appelez votre script en ajoutant -d xdebug.idekey = blacktie
phpunit -d xdebug.profiler_enable = on -d xdebug.idekey = blacktie XYZTestCase.php
J'espère que cette aide.
Le nom correct du paramètre est xdebug.profiler_enable
avec un trait de soulignement. Changez votre commande en ceci:
phpunit -d xdebug.profiler_enable=on XYZTestCase.php
Vous pouvez exécuter Xdebug à partir de la ligne de commande en définissant au préalable une variable d’environnement, par exemple:
export XDEBUG_CONFIG="idekey=YOUR_IDE_KEY remote_Host=localhost remote_enable=1"
Cela a fonctionné pour moi.
Plus d'informations sur la documentation Xdebug .
En supposant que Xdebug fonctionne déjà à partir de votre débogueur éditeur/autonome lorsqu'il est déclenché par des variables cookie/post/get, ajoutez un script Shell pour effectuer le même déclenchement.
Créer ~/bin/php-cli-debug.sh
:
#!/bin/bash
phpfile="$1"
idekey=YOUR_IDE_KEY
shift 1
php -d'xdebug.remote_enable=1' -d'xdebug.remote_autostart=1' -d'xdebug.idekey='"$idekey" -f "$phpfile" -- "$@"
Ensuite, pour déboguer des éléments sur la CLI, utilisez quelque chose comme:
$ php-cli-debug.sh "$(which phpunit)" --bootstrap tests/bootstrap.php tests/FooBarTest | less -S
Assurez-vous que votre .bashrc
a ajouté ~/bin
à votre $PATH
.
Tout d'abord, mon environnement:
php.ini:
[xdebug]
zend_extension ="c:/wamp64/bin/php/php7.1.16/zend_ext/php_xdebug-2.6.0-7.1-vc14-x86_64.dll"
xdebug.remote_enable = 1
xdebug.remote_autostart = 1
xdebug.profiler_enable = 1
xdebug.profiler_enable_trigger = 1
xdebug.profiler_output_name = cachegrind.out.%t.%p
xdebug.profiler_output_dir ="c:/wamp64/tmp"
xdebug.show_local_vars=0
xdebug.idekey = "PHPSTORM" #seems to work without this too
phpunit.xml:
<?xml version="1.0" encoding="UTF-8"?>
<phpunit backupGlobals="false"
backupStaticAttributes="false"
bootstrap="bootstrap/autoload.php"
colors="true"
convertErrorsToExceptions="true"
convertNoticesToExceptions="true"
convertWarningsToExceptions="true"
processIsolation="false"
stopOnFailure="false">
<testsuites>
<testsuite name="Application Test Suite">
<directory suffix="Test.php">./tests</directory>
</testsuite>
</testsuites>
<filter>
<whitelist processUncoveredFilesFromWhitelist="true">
<directory suffix=".php">./app</directory>
</whitelist>
</filter>
<php>
<env name="APP_ENV" value="testing"/>
<env name="CACHE_DRIVER" value="array"/>
<env name="SESSION_DRIVER" value="array"/>
<env name="QUEUE_DRIVER" value="sync"/>
</php>
</phpunit>
J'ai fait une configuration de test sur phpstorm comme ceci:
Après la configuration de l'exécution, la commande ci-dessous a été exécutée lorsque j'ai cliqué sur le bouton de débogage dans PHPSTORM.
C:\wamp64\bin\php\php7.1.16\php.exe
-dzend_extension=C:\wamp64\bin\php\php7.1.16\zend_ext\php_xdebug-2.6.0-7.1-vc14-x86_64.dll
-dxdebug.remote_enable=1 -dxdebug.remote_mode=req -dxdebug.remote_port=9000 -dxdebug.remote_Host=127.0.0.1 C:/wamp64/www/<PROJECT_FOLDER>/vendor/phpunit/phpunit/phpunit --bootstrap C:\wamp64\www\<PROJECT_FOLDER>\vendor\autoload.php --configuration C:\wamp64\www\<PROJECT_FOLDER>\phpunit.xml --teamcity
Veuillez remarquer le --teamcity
. Je n'en ai aucune idée :) Aussi remarquez les barres obliques.
J'espère que cela aide tout le monde.