Configurar Xdebug

Xdebug es una extensión para depurar tu PHP. Aunque puede utilizar un IDE de su elección, a continuación se explica cómo configurar Xdebug y PhpStorm para depurar en el entorno local.

NOTE
Puede configurar Xdebug para ejecutarse en el entorno de Cloud Docker para la depuración local sin cambiar la configuración del proyecto de Adobe Commerce en la infraestructura en la nube. Consulte Configurar Xdebug para Docker.

Para habilitar Xdebug, debe configurar un archivo en el repositorio de Git, configurar el IDE y configurar el reenvío de puertos. Puede configurar algunas opciones en la magento.app.yaml archivo. Después de editar, inserte los cambios de Git en todos los entornos de Starter y de integración de Pro para habilitar Xdebug. Xdebug ya está disponible en entornos de ensayo y producción Pro.

Una vez configurados, puede depurar los comandos de CLI, las solicitudes web y el código. Recuerde que todos los entornos de infraestructura en la nube son de solo lectura. Clone el código en el entorno de desarrollo local para realizar la depuración. Para los entornos de ensayo y producción de Pro, consulte instrucciones adicionales para Xdebug.

Requisitos

Para ejecutar y utilizar Xdebug, necesita la URL SSH para el entorno. Puede localizar la información a través del Cloud Console o su Cloud Onboarding UI.

Configurar Xdebug

Para configurar Xdebug, siga estos pasos:

Introducción a una rama

Para agregar Xdebug, el Adobe recomienda trabajar en una rama de desarrollo.

Habilitar Xdebug en su entorno

Puede activar Xdebug directamente a todos los entornos de Starter y entornos de integración de Pro. Este paso de configuración no es necesario para los entornos de ensayo y producción de Pro. Consulte Depurar para ensayo y producción profesionales.

Para habilitar Xdebug para el proyecto, añada xdebug a la runtime:extensions de la sección .magento.app.yaml archivo.

Para habilitar Xdebug:

  1. En su terminal local, abra el .magento.app.yaml en un editor de texto.

  2. En el runtime sección, en extensions, agregue xdebug. Por ejemplo:

    code language-yaml
    runtime:
        extensions:
            - redis
            - xsl
            - newrelic
            - sodium
            - xdebug
    
  3. Guarde los cambios en .magento.app.yaml y salga del editor de texto.

  4. Agregue, confirme e inserte los cambios para volver a implementar el entorno.

    code language-bash
    git add -A
    
    code language-bash
    git commit -m "Add xdebug"
    
    code language-bash
    git push origin <environment-ID>
    

Cuando se implementa en entornos Starter y entornos de integración Pro, Xdebug ya está disponible. Continúe configurando el IDE. Para PhpStorm, consulte Configurar PhpStorm.

Configurar PhpStorm

El PhpStorm El IDE debe configurarse para que funcione correctamente con Xdebug.

Para configurar PhpStorm para que funcione con Xdebug:

  1. En el proyecto PhpStorm, abra el Configuración panel.

    • macOS—Seleccionar PhpStorm > Preferencias.
    • Windows/Linux—Seleccionar Archivo > Configuración.
  2. En el Configuración , expanda y busque el Idiomas y marcos > PHP > Servidores sección.

  3. Haga clic en + para agregar una configuración de servidor. El nombre del proyecto aparece en gris en la parte superior.

  4. [Opcional] Configure las siguientes opciones para la nueva configuración del servidor. Consulte No hay ningún servidor de depuración configurado en el PHPStorm documentación.

    • Nombre: introduzca el mismo que el nombre de host. Este valor debe coincidir con el valor de PHP_IDE_CONFIG variable en Depurar comandos CLI para utilizar CLI para la depuración.
    • Host: introduzca el nombre de host.
    • Puerto: Entrar 443.
    • Depurador—Seleccionar Xdebug.
  5. Seleccionar Usar asignaciones de ruta. En el Archivo/Directorio panel, la raíz del proyecto para el serverName muestra.

  6. En el Ruta absoluta en el servidor Haga clic en la columna Editar y añada una configuración basada en el entorno.

    • Para todos los entornos de Starter y entornos de integración Pro, la ruta remota es /app.

    • Para entornos de ensayo y producción Pro:

      • Producción: /app/<project_code>/
      • Ensayo: /app/<project_code>_stg/
  7. Cambie el Xdebug puerto 9000 en el Idiomas y marcos > PHP > Depurar > Xdebug > Puerto de depuración panel.

  8. Clic Aplicar.

Configuración del reenvío de puertos

Asignar el XDEBUG del servidor al sistema local. Para realizar cualquier tipo de depuración, debe reenviar el puerto 9000 desde el servidor de Adobe Commerce en la nube a su equipo local. Consulte una de las siguientes secciones:

Reenvío de puertos en Mac o UNIX®

Para configurar el reenvío de puertos en un entorno Mac o UNIX®:

  1. Abra un terminal.

  2. Utilice SSH para establecer la conexión.

    code language-bash
    ssh -R 9000:localhost:9000 <ssh url>
    

    Utilice el -v opción (detallada) para que cuando se conecte un socket al puerto que se está reenviando, se muestre en el terminal.

    Si se muestra el error "no se puede conectar" o "no se pudo escuchar el puerto en remoto", podría haber otra sesión SSH activa en el servidor que está ocupando el puerto 9000. Si esa conexión no se está utilizando, puede terminarla.

Para solucionar problemas de conexión:

  1. Utilice SSH para iniciar sesión en el entorno de integración, ensayo o producción remoto.

  2. Ver una lista de sesiones SSH: who

  3. Ver sesiones SSH existentes por usuario. ¡Tenga cuidado de no afectar a un usuario que no sea usted!

    • integración: los nombres de usuario son similares a dd2q5ct7mhgus
    • Ensayo: los nombres de usuario son similares a dd2q5ct7mhgus_stg
    • Producción: los nombres de usuario son similares a dd2q5ct7mhgus
  4. Para una sesión de usuario anterior a la suya, busque el valor de pseudoterminal (PTS), como pts/0.

  5. Elimine el ID de proceso (PID) correspondiente al valor PTS.

    code language-bash
    ps aux | grep ssh
    kill <PID>
    

    Respuesta de ejemplo:

    code language-terminal
    dd2q5ct7mhgus        5504  0.0  0.0  82612  3664 ?      S    18:45   0:00 sshd: dd2q5ct7mhgus@pts/0
    

    Para finalizar la conexión, introduzca un comando kill con el ID de proceso (PID).

    code language-bash
    kill 3664
    

Reenvío de puertos en Windows

Para configurar el reenvío de puertos (túnel SSH) en Windows, debe configurar la aplicación de terminal de Windows. En este ejemplo se explica cómo crear un túnel SSH utilizando Masilla. Puede utilizar otras aplicaciones como Cygwin. Para obtener más información sobre otras aplicaciones, consulte la documentación del proveedor proporcionada con esas aplicaciones.

Para configurar un túnel SSH en Windows con Putty:

  1. Si aún no lo ha hecho, descargue Masilla.

  2. Iniciar Masilla.

  3. En el panel Categoría, haga clic en Session.

  4. Introduzca la siguiente información:

    • Nombre de host (o dirección IP) field: introduzca la variable URL SSH para su servidor en la nube
    • Puerto campo: Intro 22

    Configurar Masilla

  5. En el Categoría , haga clic en Conexión > SSH > Túneles.

  6. Introduzca la siguiente información:

    • Puerto de origen campo: Intro 9000
    • Destino campo: Intro 127.0.0.1:9000
    • Clic Remoto
  7. Clic Añadir.

    Creación de un túnel SSH en Putty

  8. En el Categoría , haga clic en Session.

  9. En el Sesiones guardadas , introduzca un nombre para este túnel SSH.

  10. Clic Guardar.

    Guarde el túnel SSH.

  11. Para probar el túnel SSH, haga clic en Cargar, luego haga clic en Abrir.

    Si aparece el error "no se puede conectar", compruebe lo siguiente:

    • Todos los ajustes de Masilla son correctos
    • Está ejecutando Putty en el equipo en el que se encuentran las claves SSH de su Adobe Commerce privado en la infraestructura de la nube

Acceso SSH a entornos Xdebug

Para iniciar la depuración, realizar la configuración y mucho más, necesita los comandos SSH para acceder a los entornos. Puede obtener esta información a través del Cloud Console y la hoja de cálculo del proyecto.

Para entornos Starter y entornos de integración Pro, puede utilizar lo siguiente magento-cloud Comando CLI para SSH en esos entornos:

magento-cloud environment:ssh --pipe -e <environment-ID>

Para usar Xdebug, SSH para el entorno de la siguiente manera:

ssh -R <xdebug listen port>:<host>:<xdebug listen port> <SSH-URL>

Por ejemplo,

ssh -R 9000:localhost:9000 pwga8A0bhuk7o-mybranch@ssh.us.magentosite.cloud

Depurar para ensayo y producción profesionales

NOTE
En entornos de ensayo y producción Pro, Xdebug siempre está disponible, ya que estos entornos tienen una configuración especial para Xdebug. Todas las solicitudes web normales se dirigen a un proceso PHP dedicado que no tiene Xdebug. Por lo tanto, estas solicitudes se procesan normalmente y no están sujetas a la degradación del rendimiento cuando Xdebug está cargado. Cuando se envía una solicitud web que tiene el Xdebug , se dirige a un proceso PHP separado que tiene Xdebug cargado.

Para usar Xdebug específicamente en el entorno de ensayo y producción de planificación profesional, puede crear un túnel SSH y una sesión web independientes a los que solo tiene acceso. Este uso difiere del acceso habitual, ya que solo proporciona acceso a usted y no a todos los usuarios.

Necesita lo siguiente:

  • Comandos SSH para acceder a los entornos. Puede obtener esta información a través del Cloud Console o su Cloud Onboarding UI.

  • El xdebug_key valor establecido al configurar los entornos Staging y Pro.

    El xdebug_key se puede encontrar utilizando SSH para iniciar sesión en el nodo principal y ejecutar:

    code language-bash
    cat /etc/platform/*/nginx.conf | grep xdebug.sock | head -n1
    

Para configurar un túnel SSH en un entorno de ensayo o producción:

  1. Abra un terminal.

  2. Limpie todas las sesiones SSH de cada nodo web del clúster.

    code language-bash
    ssh USERNAME@CLUSTER.ent.magento.cloud 'rm /run/platform/USERNAME/xdebug.sock'
    
  3. Configure el túnel SSH para Xdebug para cada nodo web del clúster.

    code language-bash
    ssh -R /run/platform/USERNAME/xdebug.sock:localhost:9000 -N USERNAME@CLUSTER.ent.magento.cloud
    

Para iniciar la depuración mediante la dirección URL del entorno:

  1. Habilitar la depuración remota; visite el sitio en el explorador y añada lo siguiente a la dirección URL donde KEY es el valor de xdebug_key.

    code language-http
    ?XDEBUG_SESSION_START=KEY
    

    Este paso establece la cookie que envía las solicitudes del explorador al déclencheur Xdebug.

  2. Complete la depuración con Xdebug.

  3. Cuando esté listo para finalizar la sesión, utilice el siguiente comando para quitar la cookie y finalizar la depuración a través del explorador donde KEY es el valor de xdebug_key.

    code language-http
    ?XDEBUG_SESSION_STOP=KEY
    
    note note
    NOTE
    El XDEBUG_SESSION_START pasado por POST no se admiten solicitudes de.

Depurar comandos CLI

En esta sección se explican los comandos de CLI de depuración.

Para depurar comandos CLI:

  1. SSH en el servidor que desea depurar mediante comandos CLI.

  2. Cree las siguientes variables de entorno:

    code language-bash
    export XDEBUG_CONFIG='PHPSTORM'
    
    code language-bash
    export PHP_IDE_CONFIG="serverName=<name of the server that is configured in PHPSTORM>"
    

    Estas variables se eliminan cuando finaliza la sesión SSH.

  3. Comenzar depuración

    En entornos Starter y entornos de integración Pro, ejecute el comando CLI para depurar.
    Puede añadir opciones de tiempo de ejecución, por ejemplo:

    code language-bash
    php -d xdebug.profiler_enable=On -d xdebug.max_nesting_level=9999 bin/magento cache:clean
    

    En los entornos de ensayo y producción de Pro, debe especificar la ruta al Xdebug Archivo de configuración de PHP al depurar comandos CLI, por ejemplo:

    code language-bash
    php -c /etc/platform/USERNAME/php.xdebug.ini bin/magento cache:clean
    

Depuración de solicitudes web

Los siguientes pasos le ayudan a depurar solicitudes web.

  1. En el Extensión , haga clic en Depurar para habilitar.

  2. Haga clic con el botón secundario, seleccione el menú de opciones y establezca la tecla IDE en PHPSTORM.

  3. Instale el Xdebug cliente en el explorador. Configúrelo y actívelo.

Ejemplo: Configuración de Chrome

En esta sección se explica cómo utilizar Xdebug en Chrome con el complemento Xdebug Extensión del ayudante. Para obtener información acerca de Xdebug herramientas para otros exploradores, consulte la documentación del explorador.

Para utilizar Xdebug Helper con Chrome:

  1. Crear un Túnel SSH al servidor de Cloud.

  2. Instale el Extensión de ayuda de Xdebug de la tienda de Chrome.

  3. Habilite la extensión en Chrome como se muestra en la siguiente ilustración.

    Habilitar la extensión Xdebug en Chrome

  4. En Chrome, haga clic con el botón derecho en el icono de ayuda verde en la barra de herramientas de Chrome.

  5. En el menú emergente, haga clic en Opciones.

  6. Desde el Clave IDE , haga clic en PhpStorm.

  7. Clic Guardar.

    Opciones del asistente de Xdebug

  8. Abra el proyecto PhpStorm.

  9. En la barra de navegación superior, haga clic en Empezar a escuchar icono.

    Si no aparece la barra de navegación, haga clic en Ver > Barra de navegación.

  10. En el panel de navegación de PhpStorm, haga doble clic en el archivo PHP que desea probar.

Depuración del código local

Debido a los entornos de solo lectura, debe extraer el código de la estación de trabajo local desde un entorno o rama Git específica para realizar la depuración.

El método que elija depende de usted. Tiene las siguientes opciones:

  • Compruebe el código de Git y ejecute composer install

    Este método funciona a menos que composer.json hace referencia a paquetes de repositorios privados a los que no tiene acceso. Este método resulta en obtener toda la base de código de Adobe Commerce.

  • Copie el vendor, app, pub, lib, y setup directorios

    Este método hace que tenga todo el código que pueda probar. Según el número de recursos estáticos que tenga, podría resultar en una transferencia larga con un gran volumen de archivos.

  • Copie el vendor solo directorio

    Debido a que la mayor parte del código se encuentra en vendor , es probable que este método dé como resultado buenas pruebas, aunque no están probando todo el código base.

Para comprimir archivos y copiarlos en el equipo local:

  1. Utilice SSH para iniciar sesión en el entorno remoto.

  2. Comprima los archivos.

    code language-bash
    tar -czf /tmp/<file-name>.tgz <directory list>
    

    Por ejemplo, para comprimir vendor solo directorio:

    code language-bash
    tar -czf /tmp/vendor.tgz vendor
    
  3. En su entorno local, utilice PhpStorm para comprimir los archivos.

    code language-bash
    cd <phpstorm project root dir>
    
    code language-bash
    rsync <SSH-URL>:/tmp/<file-name>.tgz .
    
    code language-bash
    tar xzf <file-name>.tgz
    
recommendation-more-help
05f2f56e-ac5d-4931-8cdb-764e60e16f26