¿Cómo depurar scripts PHP?

Cuando escribimos grandes líneas de código en PHP y luego ocurre algún error, eliminar ese error puede ser una gran tarea. Algunos errores básicos que comete el programador al programar en PHP que son:

  • Falta el punto y coma «;» y corchetes de cierre “}”.
    Para depurar los errores anteriores, usar una buena ide de PHP será muy útil, ya que sugerirá el corchete de cierre «}» y el final de la declaración con «;».
  • Escribir mal el nombre de una variable. Recuerde $var != $Var como sabemos, PHP es un lenguaje que distingue entre mayúsculas y minúsculas.
  • Uso de “=” en lugar de “==” (operador de asignación y operador de igualdad)
    Ejemplo:
    if($a = $b) {
        // Statement
    }

    Esto siempre resultará en True ya que nunca es un error asignar una variable a otra.

  • Faltan comillas en consultas SQL como ‘ ‘ y ” “. Este es un error muy común y frecuente que ocurre durante la programación PHP. Para depurar este tipo de error, siempre use el comando mysqli_error($con) con eco para ver qué error está cometiendo en las declaraciones SQL donde $con es la variable de conexión que está usando.
    Ejemplo:
    if (!mysqli_query($conn, $sql)) {
        echo "Error: " . $sql . "
    " . mysqli_error($con); }
  • Si su secuencia de comandos PHP no produce resultados mientras se ejecuta, asegúrese de que «display_errors» esté activado en el archivo php.ini.
  • “Error de análisis”: este error ocurre cuando PHP no entiende su código. Este error generalmente ocurre con un error de sintaxis.
  • “Malinterpretando el comportamiento de isset()”: a pesar de su nombre, isset() no solo devuelve falso si un elemento no existe, sino que también devuelve falso para valores nulos. Este comportamiento es más problemático de lo que podría parecer al principio y es una fuente común de problemas.
    Ejemplo:
    $data = fetchRecordFromStorage($storage, $identifier);
    if (!isset($data['keyShouldBeSet']) {
        // do something here if 'keyShouldBeSet' is not set
    }
    

    El autor de este código presumiblemente quería verificar si keyShouldBeSet estaba configurado en $data. Pero, como se discutió, isset($data[‘keyShouldBeSet’]) también devolverá falso si se configuró $data[‘keyShouldBeSet’], pero se configuró en nulo. Así que la lógica anterior es defectuosa.

  • Un error común es que falta el cierre de PHP antes de usar los comandos HTML. Así que siempre cierre PHP con «?>» y luego escriba el código HTML y después de finalizar el código HTML use «<?php» para comenzar de nuevo la codificación php.
  • Herramientas de depuración de PHP: el código PHP se puede depurar utilizando una de las muchas herramientas de depuración para adjuntar un cliente de depuración. PhpStorm funciona con utilidades de depuración como Xdebug y ZendDebugger.

    Siendo políglota (sabiendo o usando varios idiomas), necesitamos un IDE que soporte múltiples idiomas. El Xdebug con Visual Studio se usaba en el pasado, así que veamos cómo configurarlo con VS Code.

    La configuración del servidor de depuración es la misma, pero cada cliente (IDE o CLI) tendrá una configuración ligeramente diferente. Vea que el servidor de depuración (una extensión de Zend) abre un puerto y el cliente se comunica con el servidor a través de ese puerto. Es solo una cuestión de configuración e instalación de los componentes correctos.

    Estos son los pasos para hacer la programación PHP:

    • Verifique las extensiones de PHP en VS Code.
    • Instale la extensión de depuración de PHP.
    • Haga clic en «recargar» para recargar VS Code.
    • Instala Xdebug. La extensión PHP Debug para VS Code es solo una integración con Xdebug. Si instalamos PHP 7.0, debe obtener la versión correcta de Xdebug desde la página de descarga.
    • Ahora, cuando tenga la versión correcta, colóquela en el directorio PHP/ext.
    • A continuación, debe configurar PHP para usar la extensión y permitir la depuración remota. Agregue la siguiente configuración al archivo php.ini que aparece en Información de PHP:
      ; set the extension path
      zend_extension="C:/Program Files 
      (x86)/PHP/v7.0/ext/php_xdebug-2.6.1-7.0-vc14-nts.dll"
      ; allow remote debugging
      [XDebug]
      xdebug.remote_enable = 1
      xdebug.remote_autostart = 1
      

      Configurará el servidor PHP para usar XDebug. Los pasos aquí son los mismos sin importar qué IDE use.

    • Xdebug abre un puerto HTTP para que su depurador pueda conectarse. El cliente aún debe configurarse para adjuntar y usar el protocolo de depuración.

    Finalmente, configure VS Code para conectarse a Xdebug. Hay unos pocos pasos simples y luego la conexión es automática.

  • Configuración de su IDE: después de instalar Xdebug, debe configurar IDE para adjuntarlo al depurador. En VS Code, esto significa agregar una configuración de depuración. Afortunadamente, es automático en este punto. Son solo unos simples pasos:
    • Cambie a la vista de depuración.
    • Haga clic en el engranaje para abrir el menú de idiomas.
    • Seleccione PHP. Visual Studio Code generará la configuración predeterminada.
    • Vuelva a cargar el servidor PHP. Tenemos que instalar otra extensión llamada “Servidor PHP” que hace esto simple. Utilice el menú contextual (clic derecho) para controlar el servidor PHP.
    • Pone el IDE en un estado que está listo para adjuntarse a Xdebug. Las comunicaciones con el depurador ocurren a través de un puerto TCP en el servidor de depuración. Xdebug usa el protocolo DBGp a través del puerto 9000 por defecto.
  • Adjuntar un depurador: la extensión PHP Debug para VS Code generó un archivo launch.json. Ese archivo va a un directorio .vscode en la raíz del proyecto.
    {
        // Use IntelliSense to learn about possible attributes.
        // Hover to view descriptions of existing attributes.
        // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
    
        "version": "0.2.0",
        "configurations": [
            {
                "name": "Listen for XDebug",
                "type": "php",
                "request": "launch",
                "port": 9000
            },
            {
                "name": "Launch currently open script",
                "type": "php",
                "request": "launch",
                "program": "${file}",
                "cwd": "${fileDirname}",
                "port": 9000
            }
        ]
    }
    

    Está agregando dos configuraciones de lanzamiento. Están disponibles en la vista de depuración. Podemos conectarnos a un servidor en ejecución o lanzar uno nuevo con el script actual. Como ya tengo phpinfo ejecutándose, comenzaré allí eligiendo Listen for XDebug para adjuntarlo a ese servidor. Una vez que esté conectado, verá la barra de herramientas de depuración. La mayoría de los depuradores tienen un mecanismo de control similar que permite iniciar, detener, avanzar y reiniciar el depurador.

  • Cambiar el nivel de informe de errores: PHP tiene algunas formas de configurar el informe de errores. Puede usar el archivo php.ini y debe acceder a él. De lo contrario, puede usar la configuración de htaccess. Si no puede usar los archivos de configuración, tiene la opción de cambiar los valores a través de un script. Una combinación de configuraciones obtendrá los niveles correctos de registro de errores. Desea considerar las siguientes configuraciones:
    • error_reporting establece el nivel de registro.
    • E_NOTICE es útil durante el desarrollo ya que informará sobre defectos como variables no asignadas.
    • display_errors se utiliza para mostrar los mensajes de error.
    • display_startup_errors solo debe usarse durante la depuración.
    • log_errors y error_log trabajan juntos para enviar errores a un archivo de registro. Hágalo en producción en lugar de mostrarlos a los usuarios finales.
    • El manual de PHP explica estas configuraciones con más detalle y proporciona más información.

Publicación traducida automáticamente

Artículo escrito por anand27 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *