Uberspace PHP-5.6 auf PHP-7.1.7

Einmal frisches PHP für alle Hosts bitte. :) PHP-5.6.31, 7.0.21 und 7.1.7 stehen jetzt überall zur Verfügung. twitterte Uberspace. Also wieso nicht gleich ans Werk, dachte ich, denn PHP-5 solle nur bis Ende 2018 unterstützt werden, wie mir Frank von intux versicherte.

Daher
nano ~/etc/phpversion
und vorsichtshalber erst von 5.6 das Update wagen, also statt 5.6 die 5.6.31 eintragen, dann den Interpreter neu starten mit
killall php-cgi
was einwandfrei klappte. Alle Installationen waren aufrufbar.
Nun konnte der Versionssprung von 5.6 auf 7.1.7, wie zuvor beschrieben, angegangen werden.
Im Ergebnis war aber meine Nextcloud nicht mehr aufrufbar.
Der Uberspace-Support riet folgendes:

  1. Du solltest Deinen error_log einschalten und schauen, was da für Fehler geloggt werden, wenn du auf PHP 7 umstellst. Folge: Einge deprecation-Warnungen, die aber nichts mit meinem Problem zu tun hatten.
  2. Wenn du die PHP Version umstellst, müsstest du auch eine neue php.ini erstellen und damit dann auch ein neues PECL redis Modul installieren. Das führt ansonsten zu Kompatibilitätsproblemen. Folge: Das Erstellen einer neuen php.ini mit
    test -f ~/etc/php.ini || cp -a /package/host/localhost/php-$PHPVERSION/lib/php.ini ~/etc/ führte zu nichts.
  3. Wahrscheinlich wäre es auch sinnvoll, die ~/pecl/redis.so danach zu löschen und das PECL Modul erneut zu installieren.

Nachdem sich das so ein Weile hinzog, hatte ich keine Lust mehr.

Meine Methode: Nextcloud deinstalliert und neu installiert:

ssh einloggen:
ssh nutzer@server.uberspace.de
Passwort eingeben.

Alte Nextcloud löschen:

Zunächst ins Verzeichnis wechseln mit

cd /var/www/virtual/nutzer/html

Dann löschen:

rm -rf nextcloud

Aus- und neu einloggen:
ssh nutzer@server.uberspace.de
Passwort eingeben

Nextcloud holen (hier 12.0.0):

wget https://download.nextcloud.com/server/releases/nextcloud-12.0.0.zip

Entpacken:

unzip nextcloud*.zip -d /var/www/virtual/$USER/html

Zip-Ordner löschen:

rm nextcloud*.zip

Installation im Browser aufrufen und Nutzernamen nebst Passwort vergeben.

Nun ist im Backend Nextclouds PHP-7.1.7 eingetragen.

Ich hoffe, das war es jetzt.

Man könnte allenfalls noch daran denken, gemäß den Informationen des Nextcloud-Backends unter Administrator

PHP Opcache ist nicht korrekt eingerichtet. Für bessere Leistung empfehlen wir folgende Einstellungen in der php.ini:

opcache.enable=1
opcache.enable_cli=1
opcache.interned_strings_buffer=8
opcache.max_accelerated_files=10000
opcache.memory_consumption=128
opcache.save_comments=1
opcache.revalidate_freq=1

die ~/etc/php.ini bei Uberspace anzupassen, was ich jedoch in Unkenntnis etwaiger Auswirkungen auf andere Anwendungen unterlassen habe.

9 comments on Uberspace PHP-5.6 auf PHP-7.1.7

    1. Da muss ich widersprechen. Wenn man es richtig anpackt funktioniert es schon. Eine Neuinstallation wäre mit Sicherheit nicht nötig gewesen. Wahrscheinlich ging es aber so schneller und war nicht so nervenaufreibend.

  1. Falls nochmal jemand darüber stolpert:

    Bei mir war’s die Redis-Installation. Kurze Diagnose dazu:
    Redis-Einbindung in der config.php auskommentiert -> Nextcloud läuft.
    Also redis neu gegen php7 bauen.

    Wichtig ist der Hinweis im U6-Wiki:
    Wenn du den PHP-Interpreter auch direkt auf der SSH-Shell benutzt, musst du dich einmal aus- und wieder einloggen, damit deine ~/.bash_profile neu eingelesen wird; erst dann ist die Version auch auf der Shell entsprechend umgestellt.

    Erst dann bauen die pecl-Module für redis und apcu richtig neu.
    Ich habe dann vorsichtshalber noch einmal uberspace-setup-redis ausgeführt.
    Das meckert zwar bei jeder vorhandenen Datei, aber die kann man nach und nach löschen :-)

    Nicht vergessen, den Redis-service auch neu zu starten –
    svc -du ~/service/redis

    Ich habe in der config-php von Nextcloud noch die Pfadangaben ‚\OC\Memcache\Redis‘ angepasst, die waren unter PHP 5.6 noch als Doppel-Backslashes ausgeführt.
    Schöne Grüße,

    Michael

  2. Eins noch:
    Wenn Du opcache verwendet hast, lungert in der php.ini evtl. noch ein alter Eintrag für das zend_extensions Directory herum. Bei mir zeigte das jedenfalls nicht auf das eigene pecl-Verzeichnis, sondern noch auf eine 5.6er-Version, die nicht mit php7 kompatibel ist. Dadurch hat der Nextcloud-Cron-Job sich gemeldet und gemeckert. Beim debuggen habe ich gemerkt, dass jeder php-cli-Aufruf den Fehler auswirft (hier wiedergegeben, falls jemand über Suchmaschinen hier landet):
    Failed loading /package/host/localhost/php-5.6.35/lib/php/extensions/no-debug-non-zts-20131226/opcache.so: /package/host/localhost/php-5.6.35/lib/php/extensions/no-debug-non-zts-20131226/opcache.so: undefined symbol: zend_opcode_handlers

    Den Pfad auf

    zend_extension=/package/host/localhost/php-7.2/lib/php/extensions/no-debug-non-zts-20170718/opcache.so

    anpassen. Dann schweigen auch cron-Job/php-cli-Aufrufe und die Warnung in der Nextcloud-Verwaltung.

    1. Danke euch allen, das hat mir sehr geholfen. Vor allem der Cron-Tipp war hilfreich. Da ich PHP 7.0 gewählt habe, lautet mein Pfad:
      `zend_extension=/package/host/localhost/php-7.0/lib/php/extensions/no-debug-non-zts-20151012/opcache.so`

  3. Michael: tausend Dank für diesen Eintrag! Nach einer halben Stunde erfolgloser Fehlersuche hab ich Google angeworfen, bin hier gelandet und 5 Minuten später lief meine NC auf Uberspace mit PHP 7.2. Wenn es blöd gelaufen wäre, hätte ich meinen Sonntagnachmittag in dieses Problem versenkt.

    Didi auch dir vielen Dank, ohne deinen Blogbeitrag hätte ich, wie Du, eine Neuinstallation in Kauf nehmen müssen ;-)

Schreibe einen Kommentar

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