PHP 7 unter Debian Jessie installieren

Am 3. Dezember 2015 ist mit PHP 7.0.0 nach über 10 Jahren ein neues Major Release erschienen. Am 17.12.2015 ist bereits das erste Update PHP 7.0.1 mit diversen Bugfixes released worden.

Da PHP 7 neben den diversen neuen Features – wie „Deklaration für skalare Typen und Rückgabewerte“ – bis zu zweimal so schnell wie PHP 5.6 sein soll lohnt sich ein Update, sofern die eigenen Skripte inkl. Drittsoftware (wie Frameworks oder Bibliotheken) mitspielen.


 

Prüfen ob die Software PHP 7 tauglich ist

Die genutzte Drittsoftware (Frameworks, Libraries, etc.) wird inzwischen wahrscheinlich auch bei Euch via Dependency Manager wie Composer bezogen oder direkt von GitHub geklont. Daher lohnt sich in diesen Fällen zunächst ein Blick auf die GitHub Seite der jeweiligen Entwickler. Bei den guten Bibliotheken sind Unit Tests sowieso vorhanden und wahrscheinlich werden diese über bspw. Travis CI oder CircleCI nach jedem Commit auch automatisiert durchlaufen. Und genau an diesen Stelle kann man dann schauen, ob auch PHP 7 bereits getestet wird und ob die Bibliotheken sauber und fehlerfrei durchlaufen.

Etwas schwieriger wird es dann bei der eigenen Software, die verständlicherweise nicht immer bei GitHub „geparkt“ wird. Hier hilft zunächst einmal ein Blick auf die Migrationsseiten von PHP: Migrating from PHP 5.6.x to PHP 7.0.x

Die Liste an „Backward incompatible changes“ ist zwar auf den ersten Blick echt lang, wer jedoch nichts all zu „abgefahrenes“ gemacht hat, wird wahrscheinlich keine Probleme bekommen… solange sauber programmiert wurde ;)


 

PHP 7 installieren

Zunächst muss sichergestellt sein, dass Ihr root Rechte habt und dass Debian 8 (Jessie) installiert ist. Da die Standard Paketquellen unter Jessie (derzeit) nur PHP 5.6 zulassen, muss noch die Paketquelle von DotDeb hinzugefügt werden. Dann können die Paketinformationen aktualisiert und PHP 7 installiert werden:

 

Da jedoch PHP 5 auch noch installiert ist und Ihr wahrscheinlich auch noch Zusatzpakete wie ein MySQL Modul für PHP laufen habt, solltet Ihr zunächst installierten PHP Module ermitteln, die PHP 5 Module deinstallieren und die passenden PHP 7 Module zusätzlich installieren:

Die genannten Module sind natürlich in diesem Fall nur diejenigen, die ich bei mir installiert habe. Ihr müsst schauen was Euch der dpkg Befehl „ausspuckt“ und dann einfach schauen, was Ihr jeweils benötigt.

 

Im Normalfall sollte das PHP Plugin für den Apache 2.4 Webservers automatisch mit aktualisiert worden sein. Sollte dem nicht so sein, müsst Ihr das eben noch von Hand korrigieren:

Nun solltet Ihr damit PHP 5.6 durch PHP 7 ersetzt haben.


 

Update prüfen, läuft unter PHP 7 noch alles?

Zunächst solltet Ihr schauen, ob mit PHP generierte Seiten überhaupt angezeigt werden. Sollte dieses nicht der Fall sein, so schaut sowohl in den PHP Logs als auch den Apache Logs nach. Auch wenn alles zu laufen scheint, solltet Ihr jedoch einen Blick in die Error Logs riskieren.

Zusätzlich hier ein kleines Test-Skript, dass Ihr in jedem Projekthauptordner einmal ausführen solltet:

Dieses kleiner Helferlein sucht sich alle Dateien mit der Änderung .php und prüft diese Datei dann auf Syntaxfehler. Die normalen Ausgaben No syntax errors detected in ... werden verworfen und nur die Fehlermeldungen angezeigt. Sollte das Programm also ohne Ausgabe durchlaufen, gibt es keine offensichtlichen Fehler ;)


 

Fazit

PHP 7.0 ist deutlich schneller als PHP 5.6, zumindestens subjektiv. Zudem freue ich mich schon die neuen Features mal nach und nach einsetzen zu können. Insbesondere gefallen mit die „Deklaration für skalare Typen und Rückgabewerte“, die „Ersetzung der nervigen Fehlermeldungen durch eine Error Klasse analog zu Exceptions“ und der neue „Null coalescing operator“.

Ich hoffe der Beitrag konnte Euch helfen. Hinterlasst mir gerne Euer Feedback!

Das könnte dich auch interessieren...

9 Antworten

  1. Ralph Goldfuss sagt:

    An ( Nickname ) Ansas

    Vielen Vielen Dank !!!!!! für das Installations-Beispiel
    Es hat mir viel Zeit und Nerven gespart !!!
    Und deshalb nicht mit freundlichen Grüßen ….. soondern !!
    Hochachtungsvoll !!!!!
    Ralph Goldfuss

  2. stone sagt:

    Danke das du dies gepostet hast. Ich migriere gerade Owncloud 8.2 auf 9.0
    Dazu ist PHP7 erforderlich.

    Ich hoffe das klappt alles. Jedenfalls hast es sehr gute beschrieben.

    lg Stone

  3. Ralph sagt:

    Danke für die Anleitung.
    apt-get purge php5* listet aber bei meinem Jessie auch alle php7-Pakete mit auf, kann also nicht verwendet werden, wie oben beschrieben.

  4. Julian sagt:

    Vielen Dank für die tolle Anleitung.

    Das Update auf php7 hat funktioniert, nur leider geht bei mir ispconfig seid dem Upgrade nicht mehr.
    Ich erhalte jetzt ein 500 Error wenn ich das Adminpanal aufrufe.

    Vielleicht ne Idee wie ich das wieder hinbekomme?

    • Ansas Meyer sagt:

      Hi!

      Ich nutzte ISPConfig nicht, daher kann ich auch nur Anregungen geben:

      1. Aktuelle Version installieren (und prüfen, ob ISPConfig überhaupt PHP7 tauglich ist)
      2. In die Logs schauen (insb. vorhandene ISPConfig- und Werbserver-Logs)
      3. Ggf. weitere PHP Extensions nachinstallieren, denn einige Module sind aus dem PHP Core in Extensions verlagert worden (sudo apt-cache search php7.0 | sort)

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.