Depurar el script de línea de comandos PHP en phpstorm
-
24-10-2019 - |
Pregunta
yo suelo Tormenta php Como mi herramienta principal para depurar PHP y estoy muy contento. Hasta ahora he estado usando Firefox para ejecutar los scripts, y PhpStorm atrapa los descansos perfectamente.
Ahora tengo una situación en la que estoy ejecutando un script PHP a través de la línea de comandos (no navegador) y quiero saber si hay una manera de configurar PhpStorm para capturar descansos al ejecutar un script PHP a través de la línea de comandos.
Solución
Por favor Mirar/votar El problema de PhPStorm relacionado.
Por el momento, la configuración es un poco complicada. Debería ser posible depurar como descrito en el zend kb, con un servidor falso y PHP Remote Depurgar Configuración en phpstorm. Tenga en cuenta que este tutorial tiene un error, debe establecer Query_string de esta manera (en Windows):
SET "QUERY_STRING=start_debug=1&debug_port=10137&debug_host=127.0.0.1&debug_stop=1&no_remote=1&debug_session_id=10000"
(Tenga en cuenta la diferencia al citar lo que es importante).
Configure phpstorm como se muestra en las capturas de pantalla:
presione el Depurar Botón en la barra de herramientas principal. PhpStorm comenzará a escuchar las conexiones del depurador.
En la línea de comando ejecuta tu script:
d:\dev\zend\ZendServer\bin\php.exe d:\work\attaches\sample\helps.php
PhpStorm llegará al punto de interrupción:
Esto se probó en Windows con la instalación del servidor Zend, pero debería ser similar en los otros sistemas y con xdebug.
Si desea depurar directamente de PhpStorm, use Script php Ejecutar/depurar el tipo de configuración. Su instancia de PHP configurada para este proyecto debe tener Depurador zend o Xdebug habilitado en los archivos de configuración.
El modo PHP Home y el depurador se puede especificar en File | Settings | PHP
.
Acabo de verificar con la instalación del servidor Zend (PHP Home: d:\dev\zend\ZendServer\bin
) y el depurador Zend, funciona perfectamente para mí.
Otros consejos
Para habilitar la depuración de PHP con xdebug en la línea de shell/comando con phpstorm es muy fácil:
export XDEBUG_CONFIG="idekey=PHPSTORM"
En Windows CLI, use SET en lugar de exportar.
set XDEBUG_CONFIG="idekey=PHPSTORM"
Asegúrese de que PHPStorm esté escuchando las conexiones de depuración de PHP.
Para deshabilitar la depuración del final de la línea de comandos:
unset XDEBUG_CONFIG
Esto (phpStorm) es el PhPStorm IDE-Key predeterminado.
- Haga clic en Ejecutar.
- Haga clic en Editar configuraciones ...
- Haga clic en el verde +
- Seleccione el script PHP.
- Proporcione un nombre en el campo Nombre.
- Proporcione la ruta completa a su script en el campo de archivo.
- Haga clic en Aceptar.
- Seleccione el script que acaba de configurar en este menú desplegable:
- Haga clic en el botón Ejecutar o Depurar. Su script debe ejecutarse y debe atrapar cualquier punto de interrupción establecido.
Si ejecuta el script, puede ver la salida aquí:
Si depuras el script, puedes ver la salida aquí:
Verifique que las variables de los entornos SERVER_NAME
y SERVER_PORT
se establecen. PhpStorm necesita que realicen el mapeo correcto. Establecerlos con exportación en la fiesta o manualmente en el PhPScript. En ambos casos, PhpStorm puede encontrarlo entonces bajo $_SERVER['SERVER_NAME']
y $_SERVER['SERVER_PORT']
correctamente.
Para mí (en macOS) funcionó de esa manera:export XDEBUG_CONFIG="idekey=12345"
Ninguna de estas sugerencias funcionó bien para mí.
Si está en la misma situación, pruebe este comando (verifique la ruta de intérprete PHP correcta)
/usr/bin/php -dzend_extension=xdebug.so -dxdebug.remote_enable=1 -dxdebug.remote_mode=req -dxdebug.remote_port=9000 -dxdebug.remote_host=127.0.0.1 -dxdebug.remote_autostart=1 [PHP_SCRIPT]
En MacOS, estaba usando diferentes bash_profile. Tuve que ejecutar el siguiente comando primero:
source ~/.bash_profile
Esto cambió mi PHP de incorporado/usr/bin/php a uno instalado a través de XAMPP. El XDebug de PhpStorm comenzó a funcionar después del comando anterior.