2010-02-18 15 views
156

XDebug ofrece la directiva de configuración "xdebug.profiler_enable_trigger" que permite activar el perfil pasando el parámetro GET o POST "XDEBUG_PROFILE" cuando se llama a un script a través de HTTP. Esto es útil si no desea crear perfiles para TODOS sus scripts, pero solo para algunos casos especiales sin cambiar siempre su configuración de PHP.¿Cómo desencadenar el perfilador de XDebug para un script PHP de línea de comando?

¿Hay alguna forma de lograr el mismo comportamiento para los programas PHP de línea de comando? Traté de pasar el "XDEBUG_PROFILE" como un argumento de línea de comando pero no funcionó.

En general, perfilar PHP de línea de comandos funciona bien, pero me gustaría tener la misma flexibilidad por llamada que con un navegador y un servidor HTTP.

¿Alguna sugerencia?

+0

Lo siento, también estoy intentando esto pero no lo entiendo. ¿Qué debería estar en el parámetro "XDEBUG_PROFILE"? –

+0

No importa lo que esté en el parámetro, siempre y cuando esté presente. – selfawaresoup

+0

La falta de soporte para una variable de entorno [XDEBUG_PROFILE] (http://bugs.xdebug.org/view.php?id=413) es el error 413 en el rastreador de errores XDebug. – outis

Respuesta

210

Puede pasar la configuración INI con la bandera -d: php -d xdebug.profiler_enable=On script.php.

+31

En sistemas basados ​​en * nix, puede hacer esto un poco más fácil de usar creando un alias, como: 'alias phpp =" php -d xdebug.profiler_enable = 1 "'. De esta forma, cuando no desee crear un perfil solo use 'php' y cuando use' phpp'. – jonyamo

+10

Tuve que especificar en qué directorio quería que se guardara la salida del generador de perfiles, así que esto me sucedió: 'alias xphp =" php -d xdebug.profiler_enable = En -d xdebug.profiler_output_dir =. "'. Eso siempre almacena la salida de depuración en su directorio de trabajo actual. –

+0

Sí, estoy en Eclipse y XAMPP en el entorno Win7. Funciona. – gouchaoer

40

Tengo esta trabajando en Ubuntu/Netbeans por:

  • copiar las líneas Xdebug de configuración desde el archivo /etc/php5/apache2/php.ini en /etc/php5/cli/php.ini
  • estableciendo una variable de entorno con el nombre de la sesión de depuración (puede obtenerla de la cadena de consulta en la url de la página que inicia netbeans cuando se inicia la depuración) el comando es: export XDEBUG_CONFIG = "idekey = netbeans-xdebug"

Entonces, simplemente es un caso de iniciar la depuración en netbeans y haciendo "php myscript.php" en la línea de comando.

+2

Nota: Una vez que haya terminado, si desea mantener su depurador atento y no activarlo con un comando PHP, puede usar: "unset XDEBUG_CONFIG". –

+0

Esto realmente me funciona, mientras que la respuesta anterior no es ;-) –

+1

¡Esto funcionó para mí! – cmenning

12

Como se describe en la página Xdebug Remote Debugging, el perfil también se puede activar a través de la variable XDEBUG_CONFIG medio ambiente mediante inluding un "profile_enable = 1" directiva:

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

con PhpStorm el servidor web remoto i utilizar este 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 

donde server_name representa el nombre del servidor en PhpStorm conifuguration proyecto

+4

Agregué esto a .bash_aliases '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}'' "' así que cuando quiero depurar el uso de xphp en lugar de php –

7

Proceso similar pero diferente para hacer que funcione con Netbeans mientras se desarrolla en una máquina virtual.

Necesita pasar el indicador de habilitación remota, el indicador de inicio automático, el indicador ide y el nombre del host remoto.

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

En PhpStorm 7 usando WAMP que tiene esto funcione copiando la configuración de mi Xdebug que ya están trabajando desde C: \ wamp \ bin \ apache \ apache2.2.22 \ bin \ php.ini a la sección de Xdebug C: \ wamp \ bin \ php \ phpX.YZ \ php.ini. Entonces me encontré con mi guión de esta manera:

php -d xdebug.idekey=PHPSTORM script.php 

Esto incluso trabajaban para depurar scripts artesanales laravel

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

he creado un script de shell para manejar la depuración de cliente.

nombre del script: phpdebug

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

que coloca este script en /usr/bin y le dio los permisos de ejecución.

El script toma los argumentos pasados ​​en phpdebug y llama a php con los argumentos xdebug y agrega los argumentos pasados ​​al script de shell, $ * al final.

+0

Sí , en mi caso, de todos modos, todo lo que necesitaba era agregar la configuración INI para mi host remoto. Eso era todo lo que se requería para hacer la depuración en mi IDE desde un comando PHP CLI. –

+0

En realidad, también tuve que configurar la variable de entorno 'XDEBUG_CONFIG'. Solo eso y el ajuste 'xdebug.remote_host' lo hizo funcionar. –

Cuestiones relacionadas