Zend Developer Cloud – ein neuer Weg der PHP-Entwicklung
Kommentare

Debugging
Klar, var_dump(), print_r(), die() und exit() gehen immer. Aber wer schon einmal mit einem richtigen (Remote) Debugger gearbeitet hat, möchte ihn nicht mehr missen. Deswegen soll das natürlich

Debugging

Klar, var_dump(), print_r(), die() und exit() gehen immer. Aber wer schon einmal mit einem richtigen (Remote) Debugger gearbeitet hat, möchte ihn nicht mehr missen. Deswegen soll das natürlich auch in der Cloud funktionieren. Ein Problem hierbei ist die Tatsache, dass Debugger nach dem folgenden Prinzip funktionieren: Es wird ein normaler HTTP Request mit zusätzlichen Cookie- oder Get-Parametern zum Server übertragen, die Debug Extension liest diese Informationen aus und versucht sich mit dem IDE zu verbinden. Allerdings ist zwischen dem Server der Zend Developer Cloud und dem lokalen Rechner die eine oder andere Firewall installiert, die eine Verbindung vom Server zum Client verhindert. Das Zauberwort heißt hier „SSH-Tunnel“.

In der phpcloud ist der Zend Debugger vorinstalliert. Wird eine Debug-Sitzung über den Request angefordert, so versucht der Zend Debugger einen Client auf Port 10137 zu erreichen. Die IP-Adresse des Clients wird im Request übermittelt. Wenn jetzt ein Remote-SSH-Tunnel auf 127.0.0.1 und Port 10137 eingerichtet wurde, kann er für die Debug-Session genutzt werden. Das heißt, anstatt einer Verbindung zu localhost wird die Verbindung durch den Tunnel an den lokalen Rechner weitergereicht. Ein Schaubild unter [5] verdeutlicht die Situation.

Unter Zend Studio kann man einen SSH-Tunnel sehr einfach aufbauen. In den View Targets befindet sich nach einem ersten Deploy (siehe oben) ein Eintrag https://phpmagazin.my.phpcloud.com. Ein Rechtsklick bringt die Option OPEN SSH TUNNEL zutage. Ein Klick genügt, und schon kann mit dem Debuggen begonnen werden. Jeder neue Request aus dem internen Browser startet automatisch eine neue Debug-Session. Um eine Debug-Session unter PhpStorm einzurichten, brauchen wir unter Windows das kleine Tool PuTTY für den Tunnel. Hier ist die neuste Version 0.62 zu empfehlen, auch wenn Sie noch als Beta gekennzeichnet ist. Unter Version 0.60 gab es Probleme, den Tunnel von phpcloud.com aufzubauen. Zuerst sollte eine neue Connection in PuTTY angelegt werden. Hostname ist wiederum phpmagazin@phpmagazin.my.cloud.com. Der Private Key im PPK-Format wird unter CATEGORY | CONNECTION | SSH | AUTH angegeben. Auf der gleichen Ebene gibt es auch einen Eintrag TUNNELS. Hier wird der Source Port 10137 eingetragen, die Destination ist 127.0.0.1:10137, und da es ein Remote-Tunnel sein soll (also eine Verbindung vom Server zum Client), muss von Local auf Remote gewechselt werden. Ein Klick auf ADD fügt den Tunnel hinzu (Abb. 9).

Zu guter Letzt muss noch ein Proxy konfiguriert werden. Also zu CATEGORY | CONNECTION | PROXY wechseln und als Hostname phpmagazin.my.phpcloud.com eintragen; zusätzlich muss der Port auf 21653 geändert werden. Idealerweise wird diese Session noch gespeichert, sonst muss man den ganzen Kram beim nächsten Mal erneut eintragen. Also zurück zu CATEGORY | SESSION und selbige speichern. Eine ausführliche Beschreibung gibt es unter [6]. Das war’s. Ein Klick auf OPEN und der Tunnel wird aufgebaut.

Abb. 9: Remote-SSH-Tunnel in PuTTY für Debugging

Jetzt kann ein beliebiger Debug-Client, der das Zend-Debugger-Protokoll unterstützt, eingesetzt werden. Das ist ein geeigneter Weg für PhpStorm, aber natürlich auch eine alternative Möglichkeit für Zend Studio, einen Debug-Prozess zu starten. Um in PhpStorm jetzt debuggen zu können, klickt man auf den roten Telefonhörer in der Toolbar. Wenn alles funktioniert, wird er daraufhin grün und lauscht auf Port 10137 auf eingehende Debug-Verbindungen. Sowohl für Zend Studio als auch für PhpStorm kann jetzt für das Starten einer Debug-Session die Zend Toolbar für Firefox genutzt werden [7]. Das macht die Sache sehr einfach. Mehr Infos zum Debuggen gibt’s auch im Webinar unter [8].

Prima, das Debugging läuft jetzt für Zend Studio und PhpStorm. Und was ist mit NetBeans? NetBeans unterstützt den Zend Debugger nicht, lediglich Xdebug kann eingesetzt werden. Ist es jetzt möglich, auf einem Cloud-System spezielle PHP-Extensions zu aktivieren? Anders als zum Beispiel bei Managed Hostern ist das in der Developer Cloud dank einer personalisierten Zend-Server-Version möglich (Abb. 10). Dafür muss im UI auf der Übersichtsseite der Button ACCESS ZEND SERVER geklickt werden. Es öffnet sich ein neues Fenster, das Einloggen funktioniert automatisch. Im Bereich SERVER SETUP | EXTENSION befindet sich am Ende der Liste auch ein „xdebug“-Eintrag. So weit, so gut. Leider führt ein Bug in der Implementierung zurzeit dazu, dass Xdebug zwar eingeschaltet ist, aber nicht als zend_extension geladen und somit auch nicht genutzt werden kann. Sehr schade, damit können NetBeans-Nutzer erst einmal nicht debuggen. Das Problem ist den Verantwortlichen allerdings bekannt, sodass von einem schnellen Fix ausgegangen werden kann. Wenn es so weit ist, wird darüber auf dem Twitter-Account @janatzend berichtet werden. Allerdings ist das Debuggen auch nicht unbedingt für die Fehlersuche notwendig. Glücklicherweise wird bei phpcloud.com die volle Version von Zend Server kostenlos eingesetzt. Somit kann ein tolles Feature benutzt werden, das einem Flugschreiber ähnelt: Code Tracing. Eingeschaltet zeichnet es alles auf, was in einem Request passiert. Das heißt, in einem Execution Tree kann nachträglich geprüft werden, welche Methoden aufgerufen wurden, wie viel Zeit und Speicher sie benötigt haben und welche Argumente übergeben wurden. Eingeschaltet wird das Code Tracing über das UI (Abb. 11 und 12): In der Übersichtsseite gibt es neben dem GIT ACCESS-Button auch einen für CODE TRACING. Mit aktiviertem Code Tracing wird jeder Request der entsprechenden Applikation aufgezeichnet und kann auch wiederum über das UI geöffnet werden. Mehr Informationen zum Thema Code Tracing werden im Webinar [9] gegeben.

Abb. 10: Zend Server Dashboard
Abb. 11: Code-Tracing-Aktivierung in phpcloud.com-UI
Abb. 12: Fehlersuche mit Code Tracing
Unsere Redaktion empfiehlt:

Relevante Beiträge

Meinungen zu diesem Beitrag

X
- Gib Deinen Standort ein -
- or -