PHP 7.3 und Xdebug
Oft ist es so, dass das eigentliche Raspbian-Repository fast nur Pakete anbietet, die schon ein paar Jahre zurück liegen. (Im Schnitt knapp 2 bis 3 Jahre!) Jetzt aktuell findet man auf diesem Repository die Version 7.0+49. Was eigentlich noch nicht mal so schlecht ist. Ich hatte selber Anfang 2019 nur die PHP-Version 5.6 vorgefunden und wollte Xdebug einrichten. Es war irgendwie nicht miteinander kompatibel und ich bekam es einfach nicht zum Laufen. Also schaute ich nach Lösungen, welches ich auch gefunden habe.
Bei diesem Fall ist es sehr einfach. Da du hier nur auf Buster-Zweig zu zugreifen brauchst, ist das ganze auch schnell erledigt. Bevor du zum nächsten Abschnitt gehst, solltest du den Kapitel Buster als weitere Quelle für Raspbian einrichten abgearbeitet haben.
PHP 7.3 auf Raspbian installieren
Nachdem der Release Buster für Raspbian in Quellenverzeichnis verfügbar ist, kannst du jetzt auf aktuellere Inhalte zugreifen wie z.B. PHP Version 7.3. Verfügbare Versionen kannst du mit dem Befehl
apt-cache madison php
anschauen. Die Ausgabe wird dann so ähnlichen aussehen wie:
$ apt-cache madison php
php | 2:7.3+69 | http://mirrordirector.raspbian.org/raspbian buster/main armhf Packages
php | 1:7.0+49 | http://mirrordirector.raspbian.org/raspbian stretch/main armhf Packages
$ _
An diesem Beispiel kannst du entnehmen, dass auf Raspbian Strech Repo die PHP-Version 7.0+49 verfügbar ist und auf Buster Repo die 7.3+69. Mit dem Befehl:
sudo apt install -t buster php
lässt sich jetzt ganz einfach die aktuellere Version installieren. Aber sei gewarnt, dass alle davon abhängige Pakete ebenfalls mit Befehl ‘sudo apt install -t buster’ installiert werden müssen. Ansonsten werden die weitere Module mit der PHP-Version 7.3 nicht zusammen arbeiten können.
Xdebug für PHP 7.3 installieren und einrichten
Installation Xdebug
Nun, da du jetzt die PHP-Version 7.3 installiert hast, so möchte du dann auch eventuell für diese Version auch die entsprechende Debugger einrichten. Aber zuerst schauen wir die Abhängigkeiten mit folgenden Befehl an:
aptitude show php-xdebug
Da werden einige Informationen angegeben, wie z.B. ob es bereits installiert wurde, ob es automatisch geschah und viele andere Sachen. Uns ist jetzt aber nur die Abhängigkeit interessant und bei dir steht wahrscheinlich sowas wie:
Hängt ab von: ucf, php-common (>= 1:7.0+33~), phpapi-20151012, libc6 (>= 2.4)
In diesem Beispiel würde jetzt mit normalen Befehl ‘sudo apt install php-xdebug’ php-common 7.0 und alle davon ausgehende Abhängigkeiten installieren. Das würde also bedeuten, dass die Pakete von PHP der Version 7.0 installiert werden. Somit hättest du PHP-Versionen 7.0 und 7.3 auf Raspbian installiert. Xdebug wird dann nur auf 7.0 laufen können. Zudem unterstützt die Xdebug-Version 2.5 nicht die aktuelle PHP-Version 7.3 und somit wäre dir auch nicht möglich einfach mit symbolischen Link auch auf PHP 7.3 verfügbar zu machen. Siehe dazu https://xdebug.org/docs/install#versions unter PHP Version Support.
Nun, wir wollen aber, dass Xdebug unter 7.3 läuft, also gebst du den Befehl:
sudo apt install -t buster php-xdebug
Xdebug einrichten
Nach der Installation von Xdebug ist Diese unter PHP noch nicht lauffähig und muss vorher noch aktiviert werden. (So wie die anderen Module von PHP.) Mit folgenden Befehl:
file='/etc/php/7.3/mods-available/xdebug.ini' && cat $file
dürfte folgende Ausgabe ergeben:
zend_extension=xdebug.so
Hier siehst du, dass Xdebug jetzt verfügbar ist. Aber bevor du diesen Mod aktivierst, wäre vielleicht ein paar kleine Modifikationen nicht schlecht, damit du in deinem IDE wie z.B. unter VSCode, Eclipse oder so, direkt nutzen kannst.
echo "Folgende Zeilen in Datei '$file' hinzufügen:" && echo '
[XDebug]
xdebug.remote_enable = 1
xdebug.remote_autostart = 1
' | sudo tee -a $file
mit folgenden Befehl siehst du ob das geklappt hat:
cat $file && unset file
und so sollte die letzte Ausgabe aussehen:
zend_extension=xdebug.so
[XDebug]
xdebug.remote_enable = 1
xdebug.remote_autostart = 1
Jetzt brauchst du nur noch den Mod zu aktivieren:
phpenmod xdebug
Mit
php -v
kannst du sehen, ob Xdebug erfolgreich aktiviert wurde.
Und das wars, jetzt kannst du Xdebug in deinem IDE direkt nutzen. Der Standardport ist 9000. Weitere Informationen kannst du leicht mit der Funktion phpinfo() in einem Test-PHP-Datei einsehen.