Heim >Backend-Entwicklung >PHP-Tutorial >Holen Sie sich Xdebug in einer Minute mit Docker und Php 8.4 zusammenarbeiten
xdebug hat eine Geschichte, in der eine steile Lernkurve eingerichtet wird. Ich bin hier, um Ihnen zu zeigen, dass das Einrichten von XDebug nicht schmerzhaft sein muss. Tatsächlich bin ich zuversichtlich, dass Sie in etwa einer Minute XDebug mit Docker verwenden können.
ok, vielleicht dauert es einige von Ihnen ein paar Minuten :)
Wir werden das Setup mit Laravel, Php 8.4 und Xdebug v3.4.0, den neuesten stabilen Versionen zum Zeitpunkt des Schreibens, demonstrieren.
Der Kern dessen, was wir brauchen, um XDEBUG mit einem Docker -Bild zu konfigurieren, enthält:
compose.yaml
Datei, um den Container In diesem Beitrag werden wir Apache verwenden, um das Server -Setup zu vereinfachen. Der DockerFile-Code ist jedoch identisch mit der Konfiguration von XDebug in einem PHP-FPM-Bild.
Wir werden zunächst ein Demo -Projekt einrichten, wenn Sie mitmachen möchten:
<!-- Syntax highlighted by torchlight.dev -->laravel new xdebug-demo --git --no-interaction cd xdebug-demo mkdir -p build/php/conf.d build/apache touch compose.yaml \ build/Dockerfile \ build/php/conf.d/xdebug.ini \ build/apache/vhost.conf
Wir haben über die Befehlszeile Ordner und Dateien für unser Setup erstellt, aber sie können sie gerne so machen, wie Sie möchten. Zusätzlich zu den typischen Docker -Dateien haben wir eine vhost.conf
-Datei erstellt, um den Web -Root -Pfad zu unserer Anwendung zu konfigurieren.
Nächst
build/Dockerfile
<!-- Syntax highlighted by torchlight.dev -->FROM php:8.4-apache as base LABEL maintainer="Paul Redmond" RUN docker-php-ext-install pdo_mysql opcache && \ a2enmod rewrite negotiation COPY build/apache/vhost.conf /etc/apache2/sites-available/000-default.conf FROM base as development RUN cp $PHP_INI_DIR/php.ini-development $PHP_INI_DIR/php.ini COPY build/php/conf.d/xdebug.ini $PHP_INI_DIR/conf.d/xdebug.ini RUN pecl channel-update pecl.php.net && \ pecl install xdebug-3.4.0 && \ docker-php-ext-enable xdebug FROM base as app RUN cp $PHP_INI_DIR/php.ini-production $PHP_INI_DIR/php.ini COPY . /srv/app-Püche die
-Püche ist, in der die grundlegende Einrichtung unsere Bildanforderungen wie die gewünschten PHP -Erweiterungen in development
in jeder base
-Enwendigkeit und Konfiguration von Apache. enthält.
-Fühe die Entwicklungsversion der Php.ini -Datei und kopiert die Konfiguration development
, die unsere Anpassungen an XDEBUG aufnimmt. Wir verwenden xdebug.ini
, das für PHP 8.4 unterstützt wird und zum Zeitpunkt des Schreibens der neueste Stall ist. v3.4.0
-Püde, in der unser Anwendungsbild in Produktionsergebnissen verwendet wird. Verwendet das app
Zielgut das Konfigurieren von XDebug und verwendet die Produktionsversion der Php.ini -Datei. app
-Datei hinzu, die in das Docker -Bild kopiert wird, um auf den Anwendungscode zu verweisen: build/apache/vhost.conf
<!-- Syntax highlighted by torchlight.dev --><VirtualHost *:80> ServerAdmin webmaster@localhost DocumentRoot /srv/app/public <Directory "/srv/app/public"> AllowOverride all Require all granted </Directory> ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined </VirtualHost>#xdebug Konfiguration
-Datei konfigurieren. Fügen Sie dieser Datei Folgendes hinzu, wenn Sie miteinander folgen: xdebug.ini
<!-- Syntax highlighted by torchlight.dev -->laravel new xdebug-demo --git --no-interaction cd xdebug-demo mkdir -p build/php/conf.d build/apache touch compose.yaml \ build/Dockerfile \ build/php/conf.d/xdebug.ini \ build/apache/vhost.conf
Unsere Anpassungen sind erforderlich, um den Client -Host zu definieren. Da wir ein Docker -Netzwerk verwenden, muss XDebug wissen, wie man mit unserem Host -Computer kommuniziert. Wenn Sie Docker Desktop verwenden, hat Docker einen host.docker.internal
Host, der auf Ihren Host -Computer verweist.
Wenn nicht, müssen Sie die lokale Netzwerk -IP Ihres Computers finden und dies verwenden. Wir könnten diesen Wert mit einer Umgebungsvariablen mitwirken, aber ich werde das für einen zukünftigen Beitrag retten.
Zuletzt verwenden wir xdebug.start_with_request = yes
, um mit jeder Anfrage immer XDebug zu starten. Wir können XDebug mit der Benutzeroberfläche unseres Editors deaktivieren, wenn wir XDEBUG nicht verwenden möchten, aber es wird immer versuchen, eine Verbindung herzustellen.
Bevor wir eine XDebug -Verbindung überprüfen, müssen wir unseren Anwendungscontainer konfigurieren. Wir werden Docker Compose verwenden, um unsere Bewerbung mit Docker auszuführen, indem wir die folgende zu compose.yaml
:
<!-- Syntax highlighted by torchlight.dev -->FROM php:8.4-apache as base LABEL maintainer="Paul Redmond" RUN docker-php-ext-install pdo_mysql opcache && \ a2enmod rewrite negotiation COPY build/apache/vhost.conf /etc/apache2/sites-available/000-default.conf FROM base as development RUN cp $PHP_INI_DIR/php.ini-development $PHP_INI_DIR/php.ini COPY build/php/conf.d/xdebug.ini $PHP_INI_DIR/conf.d/xdebug.ini RUN pecl channel-update pecl.php.net && \ pecl install xdebug-3.4.0 && \ docker-php-ext-enable xdebug FROM base as app RUN cp $PHP_INI_DIR/php.ini-production $PHP_INI_DIR/php.ini COPY . /srv/app
unser app
Service zielt auf die development
-Präparation unseres Builds ab, montiert ein Volumen, sodass wir unseren Code ohne Wiederaufbau des Bildes ändern können, und verwendet Port 8080
, um die Anwendung lokal zu bedienen.
Wir können jetzt unser Bild mit Docker Compose erstellen und starten:
<!-- Syntax highlighted by torchlight.dev --><VirtualHost *:80> ServerAdmin webmaster@localhost DocumentRoot /srv/app/public <Directory "/srv/app/public"> AllowOverride all Require all granted </Directory> ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined </VirtualHost>
Der vorherige Befehl erstellt das Bild, startet den Container und führt es im Hintergrund aus. Zu diesem Zeitpunkt ist Xdebug bereit, Verbindungen zu erhalten, aber wir müssen eine Sache in unserer IDE optimieren, um sie zum Laufen zu bringen.
Wir werden Phpstorm verwenden, aber Sie können jeden Editor verwenden, den Sie möchten, der XDEBUG unterstützt. Da wir Docker verwenden, müssen wir einen Server in PHPSTORM konfigurieren, der unser Docker -Volumen auf unseren lokalen Projektcode ordnet. Sie können dies tun, indem Sie Einstellungen eröffnen & gt; Php & gt; Server und Konfigurieren eines Localhost -Servers mit einer Zuordnung von /srv/app
:
Wenn Sie keinen Localhost -Server haben, können Sie eine von dieser Einstellungsseite mit Port 8080
und dem Xdebug
-Debugger auswählen. Mit der Serverzuordnung können unsere IDE verstehen, wie die Serverstapelverfolgung auf Dateien im Projekt zugeordnet werden kann.
Als nächstes können wir XDEBUG mit dem Fehlersymbol in der Nähe des oberen rechten Menüs mit der Aufschrift "Hören Sie nach PHP -Debug -Verbindungen an", wenn Sie darüber schweben:
Wenn Sie darauf klicken, sollten Sie sehen, wie das Symbol grün wird.
Das Letzte, was wir tun müssen, ist, einen Haltepunkt festzulegen. Öffnen Sie die Datei routes/web.php
und setzen
Wenn Sie Ihr Projekt in einem Webbrowser (Localhost: 8080) öffnen, sollte Phpstorm Sie zum ersten Mal auffordern. Danach wird es automatisch an den von Ihnen festgelegten Haltepunkten pausieren. Sobald Sie fertig sind, können Sie auf das Fehlersymbol klicken, um XDEBUG -Verbindungen zu deaktivieren.
Weiter in Teil 2 dieses Tutorials: Flexible Docker -Bilder mit PHP -INI -Umgebungsvariablen.
Sie sollten jetzt in der Lage sein, XDebug mit Ihrem Projekt zu verwenden! Ich habe Ihnen auch ein Bonusthema gezeigt - mit mehrstufigen Bildern zum Einrichten von Entwicklungswerkzeugen und einer separaten Phase für die Produktionseinstellungen. Die Verwendung von mehrstufigen Builds kann Ihre Bilder auf eine andere Ebene der Flexibilität bringen.
Wenn Sie sich am Editor -Teil der Einrichtung von XDEBUG festhalten, verfügt PHPSTORM über umfassende Dokumentation zum Konfigurieren von XDebug. Die Dokumentation von XDEBUG ist eine weitere hervorragende Referenz, einschließlich Dokumente zu Setup, Tools, Konfigurationsoptionen und mehr.
Das obige ist der detaillierte Inhalt vonHolen Sie sich Xdebug in einer Minute mit Docker und Php 8.4 zusammenarbeiten. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!