Heim > Backend-Entwicklung > PHP-Tutorial > Holen Sie sich Xdebug in einer Minute mit Docker und Php 8.4 zusammenarbeiten

Holen Sie sich Xdebug in einer Minute mit Docker und Php 8.4 zusammenarbeiten

Emily Anne Brown
Freigeben: 2025-03-06 02:01:17
Original
830 Leute haben es durchsucht

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:

  • Eine Dockerfile, die das XDebug -Modul und die Konfiguration
  • installiert
  • a compose.yaml Datei, um den Container
  • zu starten
  • ein unterstützter Editor oder eine IDE, die Sie als XDEBUG -Client verwenden können

#Project setup

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
Nach dem Login kopieren
Nach dem Login kopieren

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.

#Docker Bild -Setup

Nächst build/Dockerfile

Die DockerFile hat einige Zeilen. Gehen wir also über den wichtigsten Code ein, um zu verstehen, wie Sie XDebug konfigurieren können. Erstens verwenden wir mehrstufige Builds, damit wir XDEBUG in Entwicklungsumgebungen konfigurieren können. Bevor die
<!-- 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
Nach dem Login kopieren
Nach dem Login kopieren
-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.

Als nächstes kopiert die

-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

Zuletzt haben wir eine

-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

#APache Vhost

Wir sind nicht hier, um zu lernen, wie man Apache konfiguriert. Wir möchten es nur verwenden, um schnell zu demonstrieren, wie einfach es ist, XDebug in Docker einzurichten. Fügen Sie einfach den folgenden Code zur

-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>
Nach dem Login kopieren
Nach dem Login kopieren
#xdebug Konfiguration

Als nächstes müssen wir XDebug über die von uns erstellte

-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
Nach dem Login kopieren
Nach dem Login kopieren

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.

#Running das Bild

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:

hinzufügen
<!-- 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
Nach dem Login kopieren
Nach dem Login kopieren

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>
Nach dem Login kopieren
Nach dem Login kopieren

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.

#Configuring phpStorm

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.

#learn mehr

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!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage