2010-02-18 9 views
156

XDebug offre la direttiva di configurazione "xdebug.profiler_enable_trigger" che permette di attivare il profiling passando il GET o POST parametro "XDEBUG_PROFILE" quando si chiama uno script tramite HTTP. Questo è utile se non vuoi la profilazione per TUTTI i tuoi script, ma solo per alcuni casi speciali senza cambiare sempre la tua configurazione PHP.Come attivare il profiler XDebug per uno script PHP da riga di comando?

C'è un modo per ottenere lo stesso comportamento per i programmi di PHP da linea di comando? Ho provato a passare "XDEBUG_PROFILE" come argomento della riga di comando ma non ha funzionato.

In generale, profiling linea di comando PHP funziona bene, ma mi piacerebbe avere lo stesso per-call-flessibilità con un server browser e HTTP.

Qualche suggerimento?

+0

Scusa, sto provando anche questo, ma non capisco. Cosa dovrebbe essere nel parametro "XDEBUG_PROFILE"? –

+0

Non importa cosa c'è nel parametro finché è presente. – selfawaresoup

+0

La mancanza di supporto per una [variabile d'ambiente XDEBUG_PROFILE] (http://bugs.xdebug.org/view.php?id=413) è il bug 413 nel bug tracker di XDebug. – outis

risposta

210

È possibile passare le impostazioni INI con il flag -d: php -d xdebug.profiler_enable=On script.php.

+31

Sui sistemi basati su * nix, è possibile renderlo un po 'più facile da usare creando un alias, ad esempio: 'alias phpp =" php -d xdebug.profiler_enable = 1 "'. In questo modo, quando non vuoi usare il profilo, usa 'php' e quando usi' phpp'. – jonyamo

+10

Ho dovuto specificare la directory in cui volevo che fosse salvato anche l'output del profiler, quindi mi ha richiamato: 'alias xphp =" php -d xdebug.profiler_enable = On -d xdebug.profiler_output_dir =. "'. Questo memorizza sempre l'output di debug nella directory di lavoro corrente. –

+0

sì, sono sotto Eclipse e XAMPP in ambiente Win7. Funziona. – gouchaoer

40

ho ottenuto questo lavorando su Ubuntu/Netbeans da:

  • copiando le linee xdebug di configurazione dal file /etc/php5/apache2/php.ini in /etc/php5/cli/php.ini
  • impostazione di una variabile di ambiente con il nome della sessione di debug (è possibile ottenere questo dalla stringa di query nell'URL della pagina avviata da netbeans all'avvio del debug) il comando è: export XDEBUG_CONFIG = "idekey = netbeans-xdebug"

allora è semplicemente un caso di iniziare il debug in NetBeans e facendo "php myscript.php" alla riga di comando.

+2

Nota: una volta terminato, se desideri mantenere il debugger in ascolto e non attivarlo con un comando PHP, puoi semplicemente utilizzare: "unset XDEBUG_CONFIG". –

+0

Questo in realtà funziona per me mentre la risposta sopra non lo è ;-) –

+1

Questo ha funzionato per me! – cmenning

12

Come descritto nella pagina Xdebug Remote Debugging, profilatura può essere attivata tramite la variabile XDEBUG_CONFIG ambiente inluding un "profile_enable = 1" direttiva:

XDEBUG_CONFIG="profiler_enable=1" php ... 
24

con PhpStorm sul web server remoto io uso questo comando:

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 

dove server_name sta per il nome del server in PhpStorm progetto conifuguration

+4

ho aggiunto questo a .bash_aliases 'alias xphp =" XDEBUG_CONFIG = "idekey = PHPSTORM" PHP_IDE_CONFIG = "serverName = esempio.com" php - d memory_limit = 1G -d xdebug.remote_host = 'echo $ SSH_CLIENT | cut -d \" = \ "-f 2 | awk '{print $ 1}'' "' così quando voglio eseguire il debug uso xphp invece di php –

7

Simile, ma diverso processo per farlo funzionare con Netbeans durante lo sviluppo su una VM.

necessario passare nella bandiera a distanza attivata, la bandiera di avvio automatico, la bandiera ide, e il nome del vostro host remoto.

php -dxdebug.remote_enable=1 -dxdebug.remote_autostart=On -dxdebug.idekey=netbeans-xdebug -dxdebug.remote_host=NAME.OF.HOST script.php 
1

In PhpStorm 7 utilizzando WAMP ho avuto questo lavoro copiando le mie impostazioni Xdebug già lavorano da C: \ wamp \ bin \ apache \ apache2.2.22 \ bin \ php.ini alla sezione xdebug di C: \ wamp \ bin \ php \ phpX.YZ \ php.ini. Poi ho eseguito il mio script in questo modo:

php -d xdebug.idekey=PHPSTORM script.php 

Questo anche lavorato per il debug di script artigianali laravel

php -d xdebug.idekey=PHPSTORM artisan db:seed --force 
3

ho creato uno script di shell per gestire il debug del client.

nome dello script: phpdebug

#!/usr/bin/ksh 
php -dxdebug.remote_host=`echo $SSH_CLIENT | cut -d "=" -f 2 | awk '{print $1}'` $* 

ho inserito questo script in /usr/bin e ha dato i permessi di esecuzione.

Lo script accetta gli argomenti passati in phpdebug e chiama php con gli argomenti xdebug e aggiunge gli argomenti passati nello script della shell, $ * alla fine.

+0

Sì , nel mio caso, comunque, tutto ciò di cui avevo bisogno era aggiungere l'impostazione INI per il mio host remoto. Era tutto ciò che era necessario per eseguire il debug nel mio IDE da un comando CLI PHP. –

+0

In realtà, ho anche bisogno di impostare la variabile di ambiente 'XDEBUG_CONFIG'. Proprio questo e l'impostazione 'xdebug.remote_host' ha funzionato. –

Problemi correlati