Konfigurera Xdebug

Xdebug är ett tillägg till felsökning av PHP. Även om du kan använda en annan utvecklingsmiljö förklarar följande hur du konfigurerar Xdebug och PhpStorm för att felsöka i din lokala miljö.

NOTE
Du kan konfigurera Xdebug för att köras i Cloud Docker-miljön för lokal felsökning utan att ändra din projektkonfiguration för Adobe Commerce för molninfrastruktur. Se Konfigurera Xdebug för Docker.

Aktivera Xdebugmåste du konfigurera en fil i Git-databasen, konfigurera din IDE och konfigurera portvidarebefordran. Du kan konfigurera vissa inställningar i magento.app.yaml -fil. Efter redigering kan du föra Git-ändringarna över alla Starter-miljöer och Pro-integreringsmiljöer för att aktivera Xdebug. Xdebug finns redan i Pro Staging & Production-miljöer.

När konfigurationen är klar kan du felsöka CLI-kommandon, webbförfrågningar och kod. Kom ihåg att alla molninfrastrukturmiljöer är skrivskyddade. Klona koden i den lokala utvecklingsmiljön för att utföra felsökningen. Proffsens miljö för mellanlagring och produktion finns på ytterligare instruktioner for Xdebug.

Krav

Köra och använda Xdebugbehöver du SSH-URL:en för miljön. Du kan hitta informationen via Cloud Console eller Cloud Onboarding UI.

Konfigurera Xdebug

Konfigurera Xdebuggör du så här:

Kom igång med en gren

Lägg till Xdebugrekommenderar Adobe att arbeta i en utvecklingsgren.

Aktivera Xdebug i miljön

Du kan aktivera Xdebug direkt till alla Starter-miljöer och Pro-integreringsmiljöer. Det här konfigurationssteget krävs inte för Pro Production & Staging-miljöer. Se Debug for Pro Staging and Production.

Aktivera Xdebug för ditt projekt, lägg till xdebug till runtime:extensions i .magento.app.yaml -fil.

Aktivera Xdebug:

  1. Öppna .magento.app.yaml i en textredigerare.

  2. I runtime avsnitt, under extensions, lägga till xdebug. Exempel:

    code language-yaml
    runtime:
        extensions:
            - redis
            - xsl
            - newrelic
            - sodium
            - xdebug
    
  3. Spara ändringarna i .magento.app.yaml och avsluta textredigeraren.

  4. Lägg till, implementera och kör ändringarna för att omdistribuera miljön.

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

Vid driftsättning i Starter-miljöer och i Pro-integreringsmiljöer Xdebug är nu tillgängligt. Fortsätt konfigurera IDE. Information om PhpStorm finns på Konfigurera PhpStorm.

Konfigurera PhpStorm

The PhpStorm IDE måste konfigureras för att fungera korrekt med Xdebug.

Så här konfigurerar du PhpStorm att arbeta med Xdebug:

  1. I PhpStorm-projektet öppnar du Inställningar -panelen.

    • macOS—Select PhpStorm > Inställningar.
    • Windows/Linux—Select Fil > Inställningar.
  2. I Inställningar panel, expandera och leta upp Språk och ramar > PHP > Servrar -avsnitt.

  3. Klicka på + för att lägga till en serverkonfiguration. Projektnamnet är grått högst upp.

  4. [Valfritt] Konfigurera följande inställningar för den nya serverkonfigurationen. Se Ingen felsökningsserver har konfigurerats i PHPStorm dokumentation.

    • Namn—Ange samma som värdnamnet. Detta värde måste matcha värdet för PHP_IDE_CONFIG variabel i Felsöka CLI-kommandon för att använda CLI för felsökning.
    • Värd—Ange värdnamnet.
    • Port—Enter 443.
    • Felsökning—Select Xdebug.
  5. Välj Använda banmappningar. I Fil/katalog -rutan, roten för projektet för serverName visas.

  6. I Absolut sökväg på servern klickar du på Redigera och lägga till en inställning baserad på miljön.

    • För alla Starter-miljöer och Pro-integreringsmiljöer är fjärrsökvägen /app.

    • För Pro Staging- och Production-miljöer:

      • Produktion: /app/<project_code>/
      • Mellanlagring: /app/<project_code>_stg/
  7. Ändra Xdebug port till 9000 i Språk och ramar > PHP > Felsök > Xdebug > Felsökningsport -panelen.

  8. Klicka Använd.

Konfigurera portvidarebefordran

Mappa XDEBUG anslutning från servern till ditt lokala system. För att kunna utföra alla typer av felsökning måste du vidarebefordra port 9000 från din Adobe Commerce på molninfrastrukturservern till din lokala dator. Se något av följande avsnitt:

Portvidarebefordran på Mac eller UNIX®

Konfigurera portvidarebefordran på en Mac eller i en UNIX®-miljö:

  1. Öppna en terminal.

  2. Använd SSH för att upprätta anslutningen.

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

    Använd -v (utförligt) så att när en socket är ansluten till porten som vidarebefordras visas den i terminalen.

    Om ett fel av typen"Det gick inte att ansluta" eller"det gick inte att lyssna på porten på fjärrservern" visas, kan det finnas en annan aktiv SSH-session som är beständig på servern och som upptar port 9000. Om den anslutningen inte används kan du avsluta den.

Felsöka anslutningen:

  1. Använd SSH för att logga in på fjärrintegrerings-, mellanlagrings- eller produktionsmiljön.

  2. Visa en lista över SSH-sessioner: who

  3. Visa befintliga SSH-sessioner per användare. Var noga med att inte påverka andra användare än dig själv!

    • integration: användarnamn liknar dd2q5ct7mhgus
    • Mellanlagring: användarnamn liknar dd2q5ct7mhgus_stg
    • Produktion: användarnamn liknar dd2q5ct7mhgus
  4. För en användarsession som är äldre än din finns pseudoterminalvärdet (PTS), som pts/0.

  5. Avsluta process-ID (PID) som motsvarar PTS-värdet.

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

    Exempelsvar:

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

    Om du vill avsluta anslutningen anger du ett avslutskommando med process-ID (PID).

    code language-bash
    kill 3664
    

Portvidarebefordran i Windows

Om du vill konfigurera portvidarebefordran (SSH-tunnling) på Windows måste du konfigurera Windows-terminalprogrammet. I det här exemplet beskrivs hur du skapar en SSH-tunnel med Putty. Du kan använda andra program som Cygwin. Mer information om andra program finns i leverantörsdokumentationen som medföljer dessa program.

Konfigurera en SSH-tunnel i Windows med Putty:

  1. Hämta om du inte redan har gjort det Putty.

  2. Starta Putty.

  3. Klicka på i kategorirutan Session.

  4. Ange följande information:

    • Värdnamn (eller IP-adress) fält: Ange SSH-URL för din molnserver
    • Port fält: Retur 22

    Konfigurera Putty

  5. I Kategori ruta, klicka Anslutning > SSH > Tunnlar.

  6. Ange följande information:

    • Källport fält: Retur 9000
    • Mål fält: Retur 127.0.0.1:9000
    • Klicka Fjärr
  7. Klicka Lägg till.

    Skapa en SSH-tunnel i Putty

  8. I Kategori ruta, klicka Session.

  9. I Sparade sessioner anger du ett namn för den här SSH-tunneln.

  10. Klicka Spara.

    Spara SSH-tunneln

  11. Om du vill testa SSH-tunneln klickar du på Läs in och sedan klicka Öppna.

    Om ett "Det går inte att ansluta"-fel visas kontrollerar du följande:

    • Alla mjuka inställningar är korrekta
    • Du kör Putty på den dator där din privata Adobe Commerce på SSH-nycklar för molninfrastruktur finns

SSH-åtkomst till Xdebug-miljöer

För att starta felsökning, utföra inställningar med mera behöver du SSH-kommandona för att komma åt miljöerna. Du kan hämta den här informationen via Cloud Console och ditt projektkalkylblad.

För Starter-miljöer och Pro-integreringsmiljöer kan du använda följande magento-cloud CLI-kommando för SSH i dessa miljöer:

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

Används Xdebug, SSH till miljön enligt följande:

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

Exempel:

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

Debug for Pro Staging and Production

NOTE
I Pro Staging & Production-miljöer Xdebug är alltid tillgängligt eftersom dessa miljöer har särskilda inställningar för Xdebug. Alla vanliga webbförfrågningar dirigeras till en dedikerad PHP-process som inte har Xdebug. Därför behandlas dessa begäranden normalt och påverkas inte av prestandaförsämringar när Xdebug har lästs in. När en webbförfrågan skickas har den Xdebug den dirigeras till en separat PHP-process som har Xdebug inläst.

Används Xdebug i Pro-planens miljö för mellanlagring och produktion skapar du en separat SSH-tunnel och webbsession som bara du har tillgång till. Den här användningen skiljer sig från den vanliga åtkomsten, som bara ger dig åtkomst och inte till alla användare.

Du behöver följande:

  • SSH-kommandon för åtkomst till miljöer. Du kan hämta den här informationen via Cloud Console eller Cloud Onboarding UI.

  • The xdebug_key värdet anges när du konfigurerar miljöer av typen Förproduktion och Pro.

    The xdebug_key kan hittas genom att använda SSH för att logga in på den primära noden och köra:

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

Konfigurera en SSH-tunnel till en mellanlagrings- eller produktionsmiljö:

  1. Öppna en terminal.

  2. Rensa alla SSH-sessioner för varje webbnod i klustret.

    code language-bash
    ssh USERNAME@CLUSTER.ent.magento.cloud 'rm /run/platform/USERNAME/xdebug.sock'
    
  3. Konfigurera SSH-tunneln för Xdebug för varje webbnod i klustret.

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

Så här startar du felsökningen med URL:en för miljön:

  1. Aktivera fjärrfelsökning. Gå till webbplatsen i webbläsaren och lägg till följande till den URL där KEY är värde för xdebug_key.

    code language-http
    ?XDEBUG_SESSION_START=KEY
    

    I det här steget anges den cookie som skickar webbläsarbegäranden till utlösaren Xdebug.

  2. Slutför felsökningen med Xdebug.

  3. När du är redo att avsluta sessionen använder du följande kommando för att ta bort cookien och avsluta felsökningen via webbläsaren där KEY är värde för xdebug_key.

    code language-http
    ?XDEBUG_SESSION_STOP=KEY
    
    note note
    NOTE
    The XDEBUG_SESSION_START passerad av POST begäranden stöds inte.

Felsöka CLI-kommandon

I det här avsnittet beskrivs CLI-kommandona för felsökning.

Så här felsöker du CLI-kommandon:

  1. SSH in på den server som du vill felsöka med CLI-kommandon.

  2. Skapa följande miljövariabler:

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

    Dessa variabler tas bort när SSH-sessionen avslutas.

  3. Starta felsökning

    Kör CLI-kommandot för att felsöka i Starter-miljöer och i Pro-integreringsmiljöer.
    Du kan lägga till körningsalternativ, till exempel:

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

    I Pro Staging- och Production-miljöer måste du ange sökvägen till Xdebug PHP-konfigurationsfil vid felsökning av CLI-kommandon, till exempel:

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

Felsöka webbförfrågningar

Följande steg hjälper dig att felsöka webbförfrågningar.

  1. Tillägg meny, klicka Felsök för att aktivera.

  2. Högerklicka, välj alternativmenyn och ställ in IDE-tangenten på PHPSTORM.

  3. Installera Xdebug i webbläsaren. Konfigurera och aktivera den.

Exempel: Chrome-inställning

I det här avsnittet beskrivs hur du använder Xdebug i Chrome med Xdebug Hjälptillägg. Mer information om Xdebug för andra webbläsare, se webbläsardokumentationen.

Använda Xdebug Helper med Chrome:

  1. Skapa en SSH-tunnel till molnservern.

  2. Installera Hjälptillägg för Xdebug från Chrome Store.

  3. Aktivera tillägget i Chrome enligt följande bild.

    Aktivera tillägget Xdebug i Chrome

  4. I Chrome högerklickar du på den gröna hjälpikonen i verktygsfältet i Chrome.

  5. På popup-menyn klickar du på Alternativ.

  6. Från IDE-nyckel lista, klicka på PhpStorm.

  7. Klicka Spara.

    Hjälpalternativ för Xdebug

  8. Öppna ditt PhpStorm-projekt.

  9. I det övre navigeringsfältet klickar du på Börja lyssna -ikon.

    Om navigeringsfältet inte visas klickar du på Visa > Navigeringsfält.

  10. Dubbelklicka på den PHP-fil som ska testas i PHpStorm-navigeringsrutan.

Felsöka lokal kod

På grund av skrivskyddade miljöer måste du hämta kod till den lokala arbetsstationen från en miljö eller en specifik Git-gren för att kunna utföra felsökning.

Det är upp till dig att välja metod. Du har följande alternativ:

  • Checka ut kod från Git och kör composer install

    Den här metoden fungerar om inte composer.json refererar till paket i privata databaser som du inte har åtkomst till. Den här metoden leder till att hela Adobe Commerce-kodbasen hämtas.

  • Kopiera vendor, app, pub, liboch setup kataloger

    Den här metoden gör att du får all kod som du kan testa. Beroende på hur många statiska resurser du har kan det resultera i en lång överföring med en stor mängd filer.

  • Kopiera vendor endast katalog

    Eftersom större delen av koden finns i vendor den här metoden kommer troligen att resultera i bra testning, men testar inte hela kodbasen.

Komprimera filer och kopiera dem till din lokala dator:

  1. Använd SSH för att logga in i fjärrmiljön.

  2. Komprimera filerna.

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

    Om du till exempel vill komprimera vendor endast katalog:

    code language-bash
    tar -czf /tmp/vendor.tgz vendor
    
  3. I din lokala miljö använder du PhpStorm för att komprimera filerna.

    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