Xdebug configureren

Xdebug is een extensie voor foutopsporing in uw PHP. Hoewel u IDE van uw keus kunt gebruiken, verklaart het volgende hoe te om Xdebug en PhpStorm te vormen om in uw lokale milieu te zuiveren.

NOTE
U kunt Xdebug zo configureren dat deze wordt uitgevoerd in de Cloud Docker-omgeving voor lokale foutopsporing zonder de projectconfiguratie van de Adobe Commerce op de cloud-infrastructuur te wijzigen. Zie Xdebug voor Dockervormen.

Om Xdebug toe te laten, moet u een dossier in uw bewaarplaats van de it vormen, uw winde vormen, en de opstellingspoort door:sturen. U kunt bepaalde instellingen configureren in het magento.app.yaml -bestand. Nadat u de Git-wijzigingen hebt bewerkt, kunt u deze activeren door de Git-wijzigingen door te voeren in alle Starter-omgevingen en Pro-integratieomgevingen Xdebug . Xdebug is al beschikbaar in Pro Staging & Production-omgevingen.

Zodra gevormd, kunt u bevelen CLI, Webverzoeken, en code zuiveren. Houd er rekening mee dat alle omgevingen met cloudinfrastructuren alleen-lezen zijn. Kloont de code aan uw lokale ontwikkelomgeving om het zuiveren uit te voeren. Voor Pro het Staging en de milieu's van de Productie, zie extra instructiesvoor Xdebug.

Vereisten

Als u Xdebug wilt uitvoeren en gebruiken, hebt u de SSH-URL voor de omgeving nodig. U kunt de informatie vinden via Cloud Console of de Cloud Onboarding UI .

Xdebug configureren

Voer de volgende stappen uit om Xdebug te configureren:

Aan de slag met een vertakking

Om Xdebug toe te voegen, adviseert de Adobe het werken in een ontwikkelingstak.

Xdebug inschakelen in uw omgeving

U kunt Xdebug rechtstreeks inschakelen voor alle Starter-omgevingen en Pro-integratieomgevingen. Deze configuratiestap is niet vereist voor Pro Production & Staging-omgevingen. Zie zuiveren voor Pro het Opvoeren en de Productie.

Als u Xdebug wilt inschakelen voor uw project, voegt u xdebug toe aan de sectie runtime:extensions van het .magento.app.yaml -bestand.

om Xdebug toe te laten:

  1. Open het bestand .magento.app.yaml in de lokale terminal in een teksteditor.

  2. Voeg in de sectie runtime onder extensions toe xdebug . Bijvoorbeeld:

    code language-yaml
    runtime:
        extensions:
            - redis
            - xsl
            - newrelic
            - sodium
            - xdebug
    
  3. Sla de wijzigingen op in het .magento.app.yaml -bestand en sluit de teksteditor af.

  4. Voeg de wijzigingen toe, begaan en duw deze om de omgeving opnieuw te implementeren.

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

Wanneer Xdebug wordt geïmplementeerd in Starter-omgevingen en Pro-integratieomgevingen, is het nu beschikbaar. Ga door met het configureren van uw IDE. Voor PHPStorm, zie PHPStormvormen.

PhpStorm configureren

PpStormwinde moet worden gevormd om behoorlijk met Xdebug te werken.

om PhpStorm te vormen om met Xdebug te werken:

  1. In uw project PhpStorm, open het paneel van Montages.

    • macOS - selecteer PHPStorm > Voorkeur.
    • Vensters/Linux - selecteer Dossier > Montages.
  2. In het paneel van Montages, breid uit en bepaal de plaats van Talen & Frameworks > PHP > sectie van Servers.

  3. Klik + om een serverconfiguratie toe te voegen. De projectnaam is grijs bovenaan.

  4. [ Facultatieve ] vorm de volgende montages voor de nieuwe serverconfiguratie. Zie Geen zuivert server diein de wordt gevormd PHPStorm documentatie.

    • Naam - ga het zelfde als hostname in. Deze waarde moet de waarde voor de PHP_IDE_CONFIG variabele in aanpassen zuivert CLI bevelenom CLI voor het zuiveren te gebruiken.
    • Gastheer - ga hostname in.
    • Haven - ga 443 binnen.
    • Debugger - selecteer Xdebug.
  5. Selecteer de wegafbeeldingen van het Gebruik. In de ruit van het Dossier/van de Folder, de wortel van het project voor de serverName vertoningen.

  6. In de Absolute weg op de server kolom, klik geef pictogram uit en voeg het plaatsen toe die op het milieu wordt gebaseerd.

    • Voor alle Starter-omgevingen en Pro-integratieomgevingen is het externe pad /app .

    • Voor Pro Staging- en Productieomgevingen:

      • Productie: /app/<project_code>/
      • Staging: /app/<project_code>_stg/
  7. Verander de Xdebug haven in 9000 in de Talen & Frameworks > PHP > zuivert > Xdebug > zuivert het paneel van de Haven.

  8. Klik toepassen.

Poorten doorsturen instellen

Wijs de XDEBUG verbinding van de server aan uw lokaal systeem toe. Voor elk type foutopsporing moet u poort 9000 van uw Adobe Commerce op de server van de cloudinfrastructuur doorsturen naar uw lokale computer. Zie een van de volgende secties:

Poorten doorsturen op Mac of UNIX®

aan opstellingshaven die op een Mac of in een milieu UNIX® door

  1. Open een terminal.

  2. Gebruik SSH om de verbinding te maken.

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

    Gebruik de optie -v (verbose) zodat wanneer een socket is verbonden met de poort die wordt doorgestuurd, deze in de terminal wordt weergegeven.

    Als een "onbekwaam om"te verbinden of "niet aan haven op verre"fout kon luisteren wordt getoond, kon er een andere actieve zitting van SSH die op de server voortduurt die haven 9000 bezet. Als die verbinding niet wordt gebruikt, kunt u het eindigen.

om de verbinding problemen op te lossen:

  1. Gebruik SSH om u aan te melden bij de externe integratie, staging of productieomgeving.

  2. Een lijst met SSH-sessies weergeven: who

  3. Bestaande SSH-sessies op gebruiker weergeven. Wees voorzichtig dat u geen andere gebruiker aangaat dan uzelf!

    • integratie: gebruikersnamen zijn vergelijkbaar met dd2q5ct7mhgus
    • Staging: gebruikersnamen zijn vergelijkbaar met dd2q5ct7mhgus_stg
    • Productie: gebruikersnamen zijn vergelijkbaar met dd2q5ct7mhgus
  4. Voor een gebruikerszitting die ouder is dan van u, vind de pseudo-terminal (PTS) waarde, zoals pts/0.

  5. Vernietig de proces-id (PID) die overeenkomt met de PTS-waarde.

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

    Monsterrespons:

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

    Om de verbinding te eindigen, ga een doodbevel met procesidentiteitskaart (PID) in.

    code language-bash
    kill 3664
    

Poorten doorsturen in Windows

Aan opstellingshaven door:sturen (het een tunnel graven van SSH) op Vensters, moet u uw eindtoepassing van Vensters vormen. Dit voorbeeldstappen door een tunnel van SSH tot stand te brengen gebruikend Putty. U kunt andere toepassingen gebruiken, zoals Cygwin. Raadpleeg de documentatie van de leverancier bij deze toepassingen voor meer informatie over andere toepassingen.

aan opstelling een tunnel van SSH op Vensters gebruikend Putty:

  1. Als u dit nog niet hebt gedaan, download Putty.

  2. Start Putty.

  3. In de ruit van de Categorie, klik Zitting.

  4. Voer de volgende gegevens in:

    • Hostname (of IP adres) gebied: Ga SSH URLvoor uw server van de Wolk in
    • Poort gebied: Ga 22 binnen

    Putty van de Opstelling

  5. In de ruit van de Categorie, klik Verbinding > SSH > Tunnels.

  6. Voer de volgende gegevens in:

    • Source haven gebied: Ga 9000 binnen
    • Doel gebied: Ga 127.0.0.1:9000 binnen
    • Klik Verre
  7. Klik toevoegen.

    creeer een tunnel van SSH in Putty

  8. In de ruit van de Categorie, klik Zitting.

  9. Op het Bewaarde gebied van Zittingen, ga een naam voor deze tunnel van SSH in.

  10. Klik sparen.

    sparen uw tunnel van SSH

  11. Om de tunnel van SSH te testen, klik Lading, dan klik Open.

    Als de fout "Kan geen verbinding maken" wordt weergegeven, controleert u het volgende:

    • Alle instellingen voor Putty zijn correct
    • U gebruikt Putty op de computer waarop uw privé Adobe Commerce op de sleutels van de de infrastructuurSSH van de wolkeninfrastructuur wordt gevestigd

SSH-toegang tot Xdebug-omgevingen

Voor het in werking stellen van het zuiveren, het uitvoeren van opstelling, en meer, hebt u de bevelen van SSH voor de toegang tot van de milieu's nodig. U kunt deze informatie door Cloud Console en uw projectspreadsheet krijgen.

Voor Starter-omgevingen en Pro-integratieomgevingen kunt u de volgende magento-cloud CLI-opdracht gebruiken om SSH in die omgevingen te gebruiken:

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

Om Xdebug te gebruiken, SSH aan het milieu als volgt:

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

Bijvoorbeeld:

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

Foutopsporing voor Pro Staging en Production

NOTE
In Pro Staging & Production-omgevingen is Xdebug altijd beschikbaar omdat deze omgevingen een speciale installatie hebben voor Xdebug . Alle normale webaanvragen worden gerouteerd naar een speciaal PHP-proces zonder Xdebug . Deze aanvragen worden daarom op de normale manier verwerkt en zijn niet onderhevig aan de prestatievermindering wanneer Xdebug wordt geladen. Wanneer een webaanvraag wordt verzonden die de sleutel Xdebug heeft, wordt deze gerouteerd naar een afzonderlijk PHP-proces dat Xdebug heeft geladen.

Als u Xdebug specifiek wilt gebruiken in de Pro-omgeving voor Staging en Productie van abonnementen, maakt u een aparte SSH-tunnel en websessie waartoe alleen u toegang hebt. Dit gebruik verschilt van typische toegang, die slechts toegang tot u en niet aan alle gebruikers verleent.

U hebt het volgende nodig:

  • SSH-opdrachten voor toegang tot de omgevingen. U kunt deze gegevens ophalen via de Cloud Console of de Cloud Onboarding UI .

  • De xdebug_key -waarde die is ingesteld bij het configureren van de Staging- en Pro-omgevingen.

    De xdebug_key kan worden gevonden door SSH te gebruiken om zich aan te melden bij het primaire knooppunt en het uitvoeren:

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

aan opstelling een tunnel SSH aan een het Opvoeren of milieu van de Productie:

  1. Open een terminal.

  2. Maak alle SSH-sessies op voor elk webknooppunt van de cluster.

    code language-bash
    ssh USERNAME@CLUSTER.ent.magento.cloud 'rm /run/platform/USERNAME/xdebug.sock'
    
  3. Opstelling de tunnel van SSH voor Xdebug voor elke Webknoop van de cluster.

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

beginnen het zuiveren gebruikend het milieu URL:

  1. Foutopsporing op afstand inschakelen; ga naar de site in de browser en voeg het volgende toe aan de URL waar KEY de waarde voor xdebug_key is.

    code language-http
    ?XDEBUG_SESSION_START=KEY
    

    Met deze stap stelt u het cookie in dat browserverzoeken verzendt om Xdebug te activeren.

  2. Voltooi de foutopsporing met Xdebug .

  3. Wanneer u klaar bent om de sessie te beëindigen, gebruikt u de volgende opdracht om de cookie te verwijderen en de foutopsporing te beëindigen via de browser waar KEY de waarde voor xdebug_key is.

    code language-http
    ?XDEBUG_SESSION_STOP=KEY
    
    note note
    NOTE
    De XDEBUG_SESSION_START die door POST -aanvragen wordt doorgegeven, worden niet ondersteund.

Foutopsporing CLI-opdrachten

Deze sectie loopt door het zuiveren bevelen CLI.

Om CLI bevelen te zuiveren:

  1. SSH in de server u wilt zuiveren gebruikend bevelen CLI.

  2. Maak de volgende omgevingsvariabelen:

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

    Deze variabelen worden verwijderd wanneer de SSH-sessie wordt beëindigd.

  3. Foutopsporing starten

    Bij Starter-omgevingen en Pro-integratieomgevingen voert u de CLI-opdracht uit om fouten op te sporen.
    U kunt bijvoorbeeld runtime-opties toevoegen:

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

    In een Pro Staging- en Production-omgeving moet u het pad naar het Xdebug PHP-configuratiebestand opgeven wanneer u foutopsporing uitvoert voor CLI-opdrachten, bijvoorbeeld:

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

Fouten opsporen in webverzoeken

De volgende stappen helpen u Webverzoeken zuiveren.

  1. Voor het menu van de Uitbreiding, klik zuivert om toe te laten.

  2. Klik met de rechtermuisknop, selecteer het optiemenu en stel de IDE-sleutel in op PHPSTORM .

  3. Installeer de Xdebug -client in de browser. Vorm en laat het toe.

Voorbeeld: Chrome instellen

In deze sectie wordt beschreven hoe u Xdebug in Chrome kunt gebruiken met de extensie Xdebug Helper. Raadpleeg de documentatie van de browser voor informatie over Xdebug -gereedschappen voor andere browsers.

om Helper Xdebug met Chrome te gebruiken:

  1. Creeer een tunnel van SSHaan de server van de Wolk.

  2. Installeer de uitbreiding van de Helper Xdebugvan de opslag van Chrome.

  3. Schakel de extensie in Chrome in zoals in de volgende afbeelding.

    laat de uitbreiding Xdebug in Chrome toe

  4. Klik in Chrome met de rechtermuisknop op het groene hulppictogram op de Chrome-werkbalk.

  5. Van pop-up menu, klik Opties.

  6. Van de Belangrijke winde lijst, klik PhpStorm.

  7. Klik sparen.

    Xdebug Helper opties

  8. Open uw PhpStorm-project.

  9. In de hoogste navigatiebar, klik het Begin luisterend pictogram.

    Als de navigatiebar niet wordt getoond, klik Mening > de Bar van de Navigatie.

  10. Dubbelklik in het navigatievenster PHP op het PHP-bestand dat u wilt testen.

Lokale code debuggen

Wegens de read-only milieu's, moet u code aan het lokale werkstation van een milieu of specifieke tak van de it trekken om het zuiveren uit te voeren.

De methode die u kiest, is aan u. U hebt de volgende opties:

  • Code uitchecken vanuit Git en uitvoeren composer install

    Deze methode werkt alleen als composer.json verwijst naar pakketten in privéopslagruimten waartoe u geen toegang hebt. Met deze methode krijgt u de volledige Adobe Commerce-codebase.

  • Kopieer de mappen vendor , app , pub , lib en setup .

    Deze methode leidt ertoe dat u alle code hebt die u mogelijk kunt testen. Afhankelijk van het aantal statische elementen waarover u beschikt, kan dit resulteren in een lange overdracht met een groot volume bestanden.

  • Alleen de map vendor kopiëren

    Omdat het grootste deel van de code zich in de map vendor bevindt, zal deze methode waarschijnlijk resulteren in goede tests, hoewel de volledige codebase niet wordt getest.

om dossiers te comprimeren en hen te kopiëren aan uw lokale machine:

  1. Gebruik SSH om u aan te melden bij de externe omgeving.

  2. Comprimeer de bestanden.

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

    Als u bijvoorbeeld alleen de map vendor wilt comprimeren:

    code language-bash
    tar -czf /tmp/vendor.tgz vendor
    
  3. Gebruik PHPStorm in uw lokale omgeving om de bestanden te comprimeren.

    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