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
.