


Holen Sie sich Xdebug in einer Minute mit Docker und Php 8.4 zusammenarbeiten
Mar 06, 2025 am 02:01 AMxdebug 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
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
<!-- 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
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>#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
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
:
<!-- 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.
#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!

Hei?e KI -Werkzeuge

Undress AI Tool
Ausziehbilder kostenlos

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Clothoff.io
KI-Kleiderentferner

Video Face Swap
Tauschen Sie Gesichter in jedem Video mühelos mit unserem v?llig kostenlosen KI-Gesichtstausch-Tool aus!

Hei?er Artikel

Hei?e Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

H?ufige Probleme und L?sungen für den variablen PHP -Umfang umfassen: 1. Die globale Variable kann innerhalb der Funktion nicht zugegriffen werden, und sie muss bei der Verwendung des globalen Schlüsselworts oder Parameters übergeben werden. 2. Die statische Variable wird statisch deklariert und nur einmal initialisiert und der Wert wird zwischen mehreren Aufrufen beibehalten. 3.. Hyperglobale Variablen wie $ _get und $ _post k?nnen direkt in jedem Bereich verwendet werden, aber Sie müssen auf eine sichere Filterung achten. 4. Die anonymen Funktionen müssen über das Schlüsselwort verwenden, und wenn Sie externe Variablen ?ndern, müssen Sie eine Referenz übergeben. Das Beherrschen dieser Regeln kann dazu beitragen, Fehler zu vermeiden und die Code -Stabilit?t zu verbessern.

Um PHP -Datei -Uploads sicher zu verarbeiten, müssen Sie die Quelle und die Type und die Eingabe des Dateinamens und des Pfades überprüfen, Serverbeschr?nkungen festlegen und Mediendateien zweimal verarbeiten. 1. überprüfen Sie die Upload -Quelle, um CSRF durch Token zu verhindern, und erkennen Sie den realen MIME -Typ über die Finfo_file mithilfe der Whitelist -Steuerung. 2. Benennen Sie die Datei in eine zuf?llige Zeichenfolge um und bestimmen Sie die Erweiterung, um sie gem?? dem Erkennungstyp in einem Verzeichnis ohne Web zu speichern. 3. Die PHP -Konfiguration begrenzt die Hochladengr??e und das tempor?re Verzeichnis Nginx/Apache verbietet den Zugriff auf das Upload -Verzeichnis. 4. Die GD -Bibliothek stellt die Bilder neu, um potenzielle b?swillige Daten zu l?schen.

Es gibt drei g?ngige Methoden für den PHP -Kommentarcode: 1. Verwenden Sie // oder #, um eine Codezeile zu blockieren, und es wird empfohlen, // zu verwenden. 2. Verwenden Sie /.../, um Codebl?cke mit mehreren Zeilen zu wickeln, die nicht verschachtelt werden k?nnen, aber gekreuzt werden k?nnen. 3.. Kombinationskenntnisse Kommentare wie die Verwendung / if () {} / Um Logikbl?cke zu steuern oder um die Effizienz mit Editor -Verknüpfungsschlüssel zu verbessern, sollten Sie auf die Schlie?ung von Symbolen achten und das Verschachteln bei der Verwendung vermeiden.

AgneeratorinphpiSamemory-effizientes WaytoiterateOverlargedatasetsByyieldingValueatimeinsteadofReturningThemallatonce.1.GeneratorsusetheyieldKeywordtoproduktenvaluesonDemand, ReducingMemoryUsage.2.TheyareusefulforfulforfulfordlingBiglopploups, Lesebiglochen, Leselungen, Lesebigs, Leselung, oder

Der Schlüssel zum Schreiben von PHP -Kommentaren liegt in der Kl?rung des Zwecks und der Spezifikationen. Kommentare sollten "Warum" und nicht "was getan" erkl?ren, um Redundanz oder zu Einfachheit zu vermeiden. 1. Verwenden Sie ein einheitliches Format wie Docblock (/*/) für Klassen- und Methodenbeschreibungen, um die Lesbarkeit und die Kompatibilit?t der Werkzeuge zu verbessern. 2. Betonen Sie die Gründe für die Logik, z. B. warum JS -Sprünge manuell ausgeben müssen. 3. Fügen Sie eine übersichtsbeschreibung vor komplexem Code hinzu, beschreiben Sie den Prozess in Schritten und helfen Sie, die Gesamtidee zu verstehen. V. Gute Anmerkungen k?nnen die Kommunikationskosten senken und die Effizienz der Code -Wartung verbessern.

Tolearnphpeffectival, startbysettingupalocalerverenVironmentusexs -LikexamppandacodeeditorikevScode.1) InstallxamppForapache, MySQL und Php.SeacodeeditorForsyntaxSupport.3) testyourscludingveliktingveliktelaThbiliodble.Neclyble.NektFile

Toinstallphpquickly, usexampponwindowsorhomebrewonmacos.1.onwindows, download undInstallxampp, SelectComponents, Startapache und PlaceFilesinhtdocscs.2.Anternativ, manuellinstallphpfrfr

In PHP k?nnen Sie quadratische Klammern oder lockige Klammern verwenden, um Zeichenfolgenspezifikationsspezifische Indexzeichen zu erhalten, aber quadratische Klammern werden empfohlen. Der Index startet von 0 und der Zugriff au?erhalb des Bereichs gibt einen Nullwert zurück und kann keinen Wert zugewiesen; MB_SUBSTR ist erforderlich, um Multi-Byte-Zeichen zu verarbeiten. Zum Beispiel: $ str = "Hallo"; echo $ str [0]; Ausgabe H; und chinesische Zeichen wie Mb_Substr ($ str, 1,1) müssen das richtige Ergebnis erzielen. In den tats?chlichen Anwendungen sollte die L?nge der Zeichenfolge vor dem Schleifen überprüft werden, dynamische Zeichenfolgen müssen für die Gültigkeit verifiziert werden, und mehrsprachige Projekte empfehlen, Multi-Byte-Sicherheitsfunktionen einheitlich zu verwenden.
