Von PHP5 auf PHP7 migrieren - Wie am sichersten?

  • Hallo Forum,


    auf meinem vServer läuft PHP5. Regelmäßig update ich meinen Server mit

    Code
    apt-get update && apt-get upgrade && apt-get dist-upgrade

    PHP5 wird dadurch scheinbar nicht automatisch durch PHP7 ersetzt. Auf dem Server läuft der neuste Debian.


    Wie update ich auf PHP7 am sichersten, ohne dass laufende Applikationen (z.B. Nextcloud) gestört werden?

    Muss ich nur PHP7 zum Repo hinzufügen, installieren, PHP5 deinstallieren und das war's?


    Danke.

  • Zitat von 147852369

    Wie update ich auf PHP7 am sichersten, ohne dass laufende Applikationen (z.B. Nextcloud) gestört werden?

    An deiner Stelle hätte ich die neue Version vorerst nur dazu installiert und die einzelnen Webseiten sukzessive von der älteren auf die neue Version umgestellt.

  • Nextcloud nutzt immer entweder einen Apachen oder einen nginx. Einen built-in Webserver gibt es nicht, nur “fertige bundles“, wo dann eben z.B. ein Apache eben schon vorkonfiguriert mitgeliefert wird.


    Wie man im Detail die Version umstellt hängt allein schon davon ab, wie du PHP angebunden hat. CGI, FastCGI, Apache Modul, FPM... Viele verschiedene Möglichkeiten mit je einer anderen Arbeitsabfolge beim Upgrade. :)

  • Welche Debian-Version nutzt Du?

    Ich mutmaße Du hast nicht auf Debian 9 (Stretch) migriert, sondern nutzt die OldStable Debian 8 (Jessie) oder gar noch Debian 7 (Wheezy).

    Bei Debian 9 käme PHP7 automatisch mit, ältere Releases bieten über die Paketverwaltung regulär aber nur PHP5 an.


    Wenn Du Deine Debian-Release nicht auf 9 (Stretch) hochziehen willst oder kannst, kannst Du durch Nutzung alternativer Paketquellen wie z.B. https://www.dotdeb.org dennoch auf Debian 7 oder 8 bereits PHP7 einsetzen.

  • Wenn Du Deine Debian-Release nicht auf 9 (Stretch) hochziehen willst oder kannst, kannst Du durch Nutzung alternativer Paketquellen wie z.B. https://www.dotdeb.org dennoch auf Debian 7 oder 8 bereits PHP7 einsetzen.

    Für neue Projekte sollte man Dotdeb nicht mehr verwenden und stattdessen auf deb.sury.org umsteigen:

    Dotdeb won’t provide any package of PHP 7.1 and later.

    If you want to install PHP 7.1+ on your machine or just seamlessly upgrade it, you should definitely take a look at deb.sury.org.


    Also:

    1. deb.sury.org Paketquellen einbinden.
    2. Herausfinden, welche php5 Pakete installiert/benötigt sind: dpkg --get-selections | grep php5
    3. Die gleichnamigen PHP7 Pakete installieren. z.B:
    Code
    apt install php7.0 libapache2-mod-php7.2 php7.0-apcu php7.0-curl php7.0-xml php7.0-zip php7.0-mbstring php7.0-gd php7.0-mysql

    (Mittlerweile kannst du auch die entsprechenden PHP7.2 Pakete nehmen, einige Pakete gibt es allerdings noch nicht (php7.2-apcu z.B.). Dann evtl PHP7.1 oder PHP7.0 Pakete nehmen oder auf Alternativen ausweichen.)



    4. Standard Version "umschalten" mit:

    Code
    update-alternatives --config php

    Man kann auch beide Versionen parallel einsetzen, je nachdem ob einige Webanwendungen mit der neuen Version nicht klarkommen, oder wichtige Pakete noch nicht verfügbar sind. Wenn alles läuft, kann man die alten Version(en) löschen.


    Viel Erfolg!