So richten Sie eine lokale Debugging-Umgebung in PHP ein

Vor kurzem habe ich mich mehr auf PHP konzentriert und musste eine lokale Debugging-Umgebung einrichten. Da es nicht viele Tutorials dazu gibt, sind einige Probleme aufgetreten, wie das Setup zum Laufen gebracht werden kann.

Durch das Kombinieren einiger Tutorials und das Verbringen einiger Stunden in mehreren Foren kam ich zu diesem Text. Die App, an der ich arbeite, läuft in einer Vagrant-Box, die irgendwie wackelig ist. Es bricht von Zeit zu Zeit zusammen, daher muss ich dieses Setup wiederholen, und daher weiß ich, dass dieses Setup funktioniert :).

Das Ziel dieses Tutorials ist es, den Xdebug auf Ihrem Server zum Laufen zu bringen und dann PhpStorm auf Xdebug zu verweisen.

Lass uns anfangen.

Voraussetzungen

Wenn Sie Xdebug nicht auf Ihrem Server installiert haben, aber PHP7 verwenden, können Sie dies mithilfe der maßgeschneiderten Installationsanweisungen von der offiziellen Xdebug-Site hier tun.

Da mein Projekt jedoch PHP5 verwendet, musste ich es auf die altmodische Weise tun: in Foren nachschlagen .

In diesem Tutorial gehe ich davon aus, dass Sie Xdebug installiert haben.

Beginnen

Zuerst müssen Sie den Speicherort der Datei xdebug.so auf Ihrem Server finden. Kopieren Sie den Speicherort irgendwo, da Sie ihn später verwenden werden.

locate xdebug.so

Jetzt müssen Sie in Ihrem Server zu einem Speicherort navigieren: /etc/php5/apache2/conf.d/ und prüfen, ob die Datei 20-xdebug.ini dort vorhanden ist. Wenn es nicht existiert, erstellen Sie eine. Sie können eine mit Befehlen wie touch, vim, vi, nano usw. erstellen.

Sie können sehen, dass mein Projekt in PHP5 erstellt wurde. Ändern Sie daher Ihren Ordnernamen / Speicherort entsprechend Ihrer PHP-Version.

Öffnen Sie nun die Datei 20-xdebug.ini und fügen Sie diese ein:

zend_extension=”location to your xdebug.so file” xdebug.remote_enable=1 xdebug.remote_port=9000 xdebug.remote_host=”your localhost address” xdebug.remote_autostart=1 xdebug.remote_connect_back=0 xdebug.remote_handler=”dbgp” xdebug.remote_mode=req xdebug.remote_cookie_expire_time=-9999 xdebug.remote_log=”/tmp/xdebug.log” xdebug.var_display_max_depth=15 xdebug.profiler_enable=0 xdebug.idekey=”phpstorm”

Aus der unten stehenden Erläuterung der Datei 20-xdebug.ini geht hervor, dass einige dieser Einstellungen nicht erforderlich sind oder auf einen Standardwert festgelegt sind. Ich behalte diese Werte in der Datei 20-xdebug.ini, weil sie gut zu wissen sind.

Erläuterung der Datei 20-xdebug.ini:

  • xdebug.remote_enable - Steuert, ob Xdebug versuchen soll, einen Debug-Client zu kontaktieren, der den Host und den Port überwacht, wie in den Einstellungen festgelegt
  • xdebug.remote_port - Der Port, zu dem Xdebug versucht, auf dem Remote-Host eine Verbindung herzustellen. Standard ist 9000.
  • xdebug.remote_host - Wählt den Host aus, auf dem der Debug-Client ausgeführt wird. Standard ist localhost.
  • xdebug.remote_autostart - Wenn diese Einstellung auf 1 gesetzt ist, versucht Xdebug, eine Remote-Debugging-Sitzung zu starten und eine Verbindung zu einem Client herzustellen.
  • xdebug.remote_connect_back - Wenn diese Option aktiviert ist, wird die Einstellung xdebug.remote_host ignoriert und Xdebug versucht, eine Verbindung zu dem Client herzustellen, der die HTTP-Anforderung gestellt hat. Standard ist 0.
  • xdebug.remote_handler - Kann entweder 'php3' sein, das die alte Debugger-Ausgabe im PHP 3-Stil auswählt, 'gdb', das die GDB-ähnliche Debugger-Schnittstelle aktiviert, oder 'dbgp' - das Debugger-Protokoll. Das DBGp-Protokoll ist das einzige unterstützte Protokoll. Standard ist dbgp.
  • xdebug.remote_mode - Wählt aus, wann eine Debug-Verbindung initiiert wird. Diese Einstellung kann zwei verschiedene Werte haben: req - Xdebug versucht, eine Verbindung zum Debug-Client herzustellen, sobald das Skript gestartet wird. jit - Xdebug versucht nur, eine Verbindung zum Debug-Client herzustellen, sobald eine Fehlerbedingung auftritt.
  • xdebug.remote_cookie_expire_time - Diese Einstellung kann verwendet werden, um die Zeit zu verlängern (oder zu verringern), in der die Remote-Debugging-Sitzung über das Sitzungscookie am Leben bleibt. Standard ist 3600.
  • xdebug.remote_log - Wenn ein Wert festgelegt ist, wird er als Dateiname für eine Datei verwendet, in der die gesamte Remote-Debugger-Kommunikation protokolliert wird.
  • xdebug.var_display_max_depth - Steuert, wie viele verschachtelte Ebenen von Array-Elementen und Objekteigenschaften vorhanden sind, wenn Variablen entweder mit xdebug_var_dump (), xdebug.show_local_vars oder über Funktionsspuren angezeigt werden. Standard ist 3.
  • xdebug.profiler_enable - Aktiviert den Profiler von Xdebug, der Dateien im Profilausgabeverzeichnis erstellt. Standard ist 0.
  • xdebug.idekey - Steuert, welcher IDE-Schlüssel Xdebug an den DBGp-Debugger-Handler weitergegeben werden soll. Die Standardeinstellung basiert auf den Umgebungseinstellungen.

Speichern Sie die Datei und starten Sie den Apache-Server neu:

sudo service apache2 restart

Xdebug und PhpStorm

Zuerst müssen Sie PhpStorm öffnen und Ausführen> Konfiguration bearbeiten auswählen. Dort sollten Sie + (Neue Konfiguration hinzufügen) und "PHP Remote Debug" auswählen.

Ändern Sie den Namen der Konfiguration von "Unbenannt" in etwas anderes. Ich habe den Namen "Tutorial" aus offensichtlichen Gründen gewählt;) Dann überprüfen Sie die "Filter Debug-Verbindung nach IDE-Schlüssel".

Wählen Sie die Schaltfläche Server (…) und dann + (Neuen Server hinzufügen).

  • Benennen Sie Ihren Server in etwas Beruhigenderes um. Ich habe in diesem Beispiel "localbackend1" gewählt.
  • Geben Sie im Feld Host Ihren lokalen Host ein. Setzen Sie den Debugger auf Xdebug.
  • Wählen Sie "Pfadzuordnung verwenden" und zeigen Sie auf den Ordner Ihrer App.

Klicken Sie auf Übernehmen. Sie kehren zum vorherigen Fenster zurück, in dem Sie sehen, dass der IDE-Schlüssel bearbeitet werden kann, und müssen nun einen Schlüssel eingeben. Ich habe immer "phpstorm" oder ähnliches gesetzt.

Sie werden feststellen, dass sich der IDE-Schlüssel "phpstorm" bereits in Ihrer Datei 20-xdebug.ini befindet:

xdebug.idekey=”phpstorm”

Sie sollten auch Nur Einzelinstanz auswählen, da Sie dadurch nicht mehr als eine Instanz desselben Projekts starten können.

Klicken Sie auf Bewerben und Voilà!

Sie sind mit dem Setup fertig!

Testen und einpacken

Jetzt bist du fertig. Die von uns erstellte Tutorial-Konfiguration sollte in der oberen rechten Ecke von PhpStorm angezeigt werden.

Sie können es testen, indem Sie einen Haltepunkt in Ihrem Projekt festlegen. Klicken Sie im Konfigurationsfenster des Tutorials auf die Schaltfläche "Fehler" und führen Sie dann Ihre App aus.

Das sollte alles sein, wenn alles in Ordnung ist, sollten Sie den Haltepunkt erreichen.

Und denken Sie daran, nichts geht über das Gefühl, Laufzeitwerte beim Debuggen zu sehen.

Danke fürs Lesen! Weitere Artikel wie diesen und andere lustige Dinge, die ich in meinem Github-Profil mache, finden Sie unter: //github.com/GoranAviani