visual sublime studio debug code chrome php configuration command-line profiling xdebug

php - sublime - xdebug config



¿Cómo desencadenar el perfilador de XDebug para un script PHP de línea de comando? (7)

Como se describe en la página Xdebug Remote Debugging , la creación de perfiles también se puede habilitar a través de la variable de entorno XDEBUG_CONFIG al XDEBUG_CONFIG una directiva "profile_enable = 1":

XDEBUG_CONFIG="profiler_enable=1" php ...

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.

¿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 comando funciona bien, pero me gustaría tener la misma flexibilidad por llamada que con un navegador y servidor HTTP.

¿Alguna sugerencia?


Creé un script de shell para manejar la depuración del cliente.

nombre del script: phpdebug

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

Coloqué este script en /usr/bin y le di permisos de ejecución.

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


En PhpStorm 7 usando WAMP conseguí que esto funcionara al copiar mi configuración xdebug que ya estaba funcionando desde C: / wamp / bin / apache / apache2.2.22 / bin / php.ini a la sección xdebug de C: / wamp / bin / php / phpX.YZ / php.ini. Luego ejecuté mi script así:

php -d xdebug.idekey=PHPSTORM script.php

Esto incluso funcionó para depurar los scripts artesanales de Laravel

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


Lo tengo trabajando en Ubuntu / Netbeans por:

  • copiando las líneas de configuración de xdebug del archivo /etc/php5/apache2/php.ini en /etc/php5/cli/php.ini
  • establecer una variable de entorno con el nombre de la sesión de depuración (puede obtener esto 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 es simplemente un caso de iniciar la depuración en netbeans y hacer "php myscript.php" en la línea de comandos.


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 de ide y el nombre de su host remoto.

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


con PhpStorm en el servidor web remoto, uso 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 la conifuguración del proyecto PhpStorm


Puede pasar configuraciones INI con el indicador -d : php -d xdebug.profiler_enable=On script.php .