Para depurar código PHP, necesitamos un debugger que automatice esa tarea sin tener que estar interpretando los scripts, ensuciando nuestro código con sentencias de salidas de texto y estar saliendo al navegador constantemente para ver los resultados de cada cambio. Además el depurador nos permitirá revisar el código por fragmentos a través de la creación de puntos de ruptura o breakpoints que están asociados a las líneas de código php. Por suerte PHP proporciona Xdebug una herramienta de depuración única, integrada y desarrollada por los creadores de este lenguaje de backend. Depurar php ahora es más sencillo, sigue los siguientes pasos para configurar y entender como realizarlo:
Averiguando la versión de Xdebug apta para la versión de PHP que tenemos instalado. Pasos:
Si tenemos instalado el XAMPP es muy sencillo, tan solo tenemos que abrir el navegador y escribiremos en la barra de direcciones localhost, y en el menú de la página que aparecerá pulsaremos la opción de PHPInfo.
Seleccionamos todo el contenido de la página web y después lo copiamos en el portapapeles con el atajo Ctrl + C
Ahora nos vamos al Wizard de Xdebug, es decir el asistente de configuración de Xdebug. Para ello pondremos la siguiente dirección en nuestro navegador:
y pegaremos el código copiado en el paso 2 en el siguiente campo:
Después pulsaremos en el botón que pone Analyse … que está debajo del campo donde has pegado el texto. Esta acción enviará y analizará el texto insertado y después nos dará instrucciones personalizadas de descarga e instalación.
Nota: lo que hace este Wizard es ayudar a encontrar qué archivo de versión de Xdebug tiene que descargar con tu configuración y versión de PHP. Pero también cómo configurar PHP para ejecutar Xdebug.
Pantalla con las instrucciones generadas por el formulario:
El primer paso es un enlace para descargarnos la librería Xdebug.
El segundo nos indica la ruta donde debemos colocarla y el nombre que tiene que tener. Si hay un archivo con el mismo nombre, simplemente renómbralo y así usas la librería dll que te has descargado que está más actualizada.
El tercer paso es abrir el archivo de configuración php.ini y añadir la línea de código que indica en la imagen. Añade las siguientes líneas al final del archivo php.ini:
xdebug.mode = debug
xdebug.start_with_request = yes
xdebug.client_port = 9003
zend_extension = C:\xampp\php\ext\php_xdebug.dll
El cuarto paso es reiniciar Apache.
Es posible que en lugar de unas instrucciones la página de Xdebug nos arroje algún aviso de incompatibilidad:
Entonces necesitaras previamente actualizar Xampp. Antes de proceder con la actualización haz primero un backup de tus archivos y proyectos (situados en htdocs) y también las bases de datos si has creado alguna. Después renombra la carpeta xampp a por ejemplo, xampp-antiguo. Ahora instala la nueva versión de Xampp en la misma ubicación (en mi caso c:/xampp) donde instalaste la versión anterior para que funcione adecuadamente y sin conflictos.
Comprobaremos que Xdebug está instalado y configurado adecuadamente. Para ello recarga la página de phpinfo, tal y como hicimos en el paso 1. Ahora debería aparecer una nueva línea de texto en la zona de ZendEngine:
Si no tenemos instalado el editor Visual Studio Code, lo puedes descargar para Windows, Mac o Linux desde el siguiente enlace: Descargar Visual Studio Code
Lo primero que debemos hacer es abrir Visual Studio Code e instalar la extensión PHP Debug.
Y después aconsejo instalar la extensión PHP Extension Pack del mismo autor:
Ahora ya estamos listos para depurar un proyecto. Abriremos nuestro proyecto (Archivo >Abrir Carpeta). Después pulsaremos en el icono de depuración, después en el botón Ejecutar y depurar. Aparecerá una casilla para seleccionar el lenguaje que deseemos depurar en nuestro caso pulsaremos PHP o lo escribiremos. Si no aparece PHP es porque no tenemos ningún archivo con extensión php abierto y por tanto no puede depurar nada.
Para solucionar este error debemos copiar la ruta donde esta instalado php en nuestro servidor local. Y después añadirla a una una variables de entorno de ruta. Tenemos 2 opciones, veamos como hacerlo:
Vamos al explorador de Windows y hacemos clic derecho sobre Mi PC y después en propiedades. Nos aparece la siguiente ventana pulsamos en Configuración avanzada del sistema y aparece otra ventana donde pulsaremos en Variables de entorno:
Otra opción más rápida es ir al buscador de Windows y al escribir variables, nos aparecen en los resultados 2 opciones y elegimos Editar las variables de entorno de esta cuenta:
Nos aparece la siguiente ventana Después hacemos doble clic en Path:
Ahora en la siguiente ventana creamos una nueva variable pulsando en Nuevo:
Y le ponemos el siguiente nombre: C:\xampp\php
Después pulsamos en aceptar y listo ya tenemos solucionado el error de ruta.
Si aparece error de ruta de alguna extensión de php lo podemos solucionar de la siguiente manera:
Añadiremos las 2 últimas líneas al archivo de configuración:
{"workbench.colorTheme": "Default Dark+", "security.workspace.trust.untrustedFiles": "open", "window.zoomLevel": 0, "php.validate.executablePath": "C:\\xampp\\php\\php.exe", "php.executablePath": "C:\\xampp\\php\\php.exe"}
Para debuggear o depurar php en VSC debemos abrir el menú Ejecución y depuración. Para que se despliegue clica en el cuarto icono (es un play con un bug) de la barra de herramientas de la izquierda:
Para una depuración correcta haremos uso de la característica de los puntos de interrupción (breakpoints). Un punto de interrupción le dice al IDE, en este caso VSC, que debe detener la ejecución del código para para que así podamos revisar la ejecución del código por partes.
Abrimos un archivo .php con código. Nos situamos en el margen izquierdo del archivo php justo antes de la numeración de la línea, haremos clic para añadir un punto de interrupción en esa línea. Al hacerlo aparece un punto rojo que indica que esa línea tiene un punto de interrupción. Tras añadir todos los puntos de interrupción en las líneas oportunas ya podemos testear el bloque de código que va de punto de interrupción a punto de interrupción, pero primero tendremos que iniciar el debugger.
Después iniciaremos la depuración pulsando a la izquierda en el play de color verde que dice Listen for Xdebug. Si se ha iniciado correctamente notaremos que la barra inferior de VSC cambia de color azul a naranja.
Ahora ves a un navegador web y carga la página que ejecuta el archivo que tienes abierto en VSC para así iniciar la ejecución y poder depurar. Por ejemplo en mi caso que tengo alojado el index.php dentro de una carpeta que se llama depuracionphp pongo: http://localhost/depuracionphp/. Interpretado nuestro código ahora ya podemos volver a VSC el cual controla la ejecución de todas las líneas de código y podremos depurar secuencialmente pasando por cada punto de interrupción definido por nosotros.
Puedes cambiar los puntos de ruptura por mensajes. Es la manera más profesional de lanzar echos. Pare ello edita los puntos de ruptura y cámbialos por mensajes de texto así: Clic derecho / Editar punto de registro Ahora ejecuta el programa y trázalo con VSC. Recorre los puntos de ruptura y mira la consola de depuración para ver si imprime las cadenas de texto asociadas
Si aparece un play amarillo alrededor del punto de ruptura, indica donde estamos que la ejecución ha llegado hasta ese punto, es como un puntero que lo vamos moviendo. Para pasar al segundo punto de interrupción, si hemos definido otros pulsaremos F5 o también utilizaremos las herramientas de depuración que aparecen en la barra de depuración en la parte superior derecha y que nos permiten hacer lo mismo pulsando en el icono correspondiente y que tiene otras opciones más:
Descripción de herramientas de depuración de izquierda a derecha: