XDebug ofrece la directiva de configuración "xdebug.profiler_enable_trigger" que permite activar la generación de perfiles 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, sino solo para algunos casos especiales sin cambiar siempre su configuración de PHP.
¿Hay alguna manera de lograr el mismo comportamiento para los programas PHP de línea de comandos? Traté de pasar el "XDEBUG_PROFILE" como argumento de línea de comando pero no funcionó.
En general, el perfil de línea de comandos PHP funciona bien, pero me gustaría tener la misma flexibilidad por llamada que con un navegador y un servidor HTTP.
¿Alguna sugerencia?
php
configuration
command-line
profiling
xdebug
selfawaresoup
fuente
fuente
Respuestas:
Puede pasar ajustes INI con la
-d
bandera:php -d xdebug.profiler_enable=On script.php
.fuente
alias phpp="php -d xdebug.profiler_enable=1"
. De esa manera, cuando no desee crear un perfil, simplemente usephp
y cuando lo hagaphpp
.alias xphp="php -d xdebug.profiler_enable=On -d xdebug.profiler_output_dir=."
. Eso siempre almacena la salida de depuración en su directorio de trabajo actual.phpp.cmd
archivo que contenga yphp -d xdebug.profiler_enable=On %*
luego simplemente puede ejecutarlophpp <args>
.Tengo esto trabajando en Ubuntu / Netbeans por:
Entonces se trata simplemente de iniciar la depuración en netbeans y hacer "php myscript.php" en la línea de comando.
fuente
con PhpStorm en un servidor web remoto, uso este comando:
donde se
server_name
encuentra el nombre del servidor en la configuración del proyecto PhpStormfuente
alias xphp="XDEBUG_CONFIG="idekey=PHPSTORM" PHP_IDE_CONFIG="serverName=example.com" php -d memory_limit=1G -d xdebug.remote_host=
echo $ SSH_CLIENT | cortar -d \ "= \" -f 2 | awk '{print $ 1}'"
así que cuando quiero depurar uso xphp en lugar de phpComo se describe en la página de depuración remota de Xdebug , la creación de perfiles también se puede habilitar a través de la
XDEBUG_CONFIG
variable de entorno al incluir una directiva "profile_enable = 1":fuente
Proceso similar pero diferente para que funcione con Netbeans mientras se desarrolla en una VM.
Debe pasar la bandera habilitada remotamente, la bandera de inicio automático, la bandera ide y el nombre de su host remoto.
fuente
Creé un script de shell para manejar la depuración del cliente.
nombre del script: phpdebug
Coloqué este script
/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 agrega los argumentos pasados al script de shell, el $ * al final.
fuente
XDEBUG_CONFIG
variable de entorno. Solo eso y laxdebug.remote_host
configuración lo hizo funcionar.En PhpStorm 7 usando WAMP, conseguí que esto funcionara copiando mi configuración de xdebug que ya funcionaba de 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í:
Esto incluso funcionó para depurar scripts artesanales laravel
fuente
Documentación de Jetbrains
Para iniciar la secuencia de comandos con la depuración utilizando modificadores de línea de comando PHP Establezca una variable de entorno que le diga a XDebug que se conecte a IDE:
Windows / MacOS / Linux
Aquí idekey debe tener un valor aleatorio.
Inicie PHP con las siguientes opciones de línea de comandos:
Puede usar 10.0.2.2 en lugar de 127.0.0.1 con Vagrant (consulte la pregunta SO relacionada).
fuente