PHP 7.1: Version für Nextcloud 16 auf Ubuntu 16.04 aktualisiert

5 April 2019 2 Kommentare Autor: Jürgen (jdo)

Nun habe ich mich doch für ein Upgrade meiner PHP-Version auf einem Ubuntu 16.04 entschlossen, da Nextcloud 16 mindestens PHP 7.1 voraussetzt. Allerdings ist es nicht meine produktive Nextcloud, die über das Internet erreichbar ist, sondern meine interne auf meinem kleinen Serverchen hier. Auf dem läuft auch immer noch Ubutu 16.04 Server LTS Xenial Xerus.

Wichtiger Hinweis: Der Prozess war echt zeitraubend und zermürbend. Überleg Dir gut, ob Du Dir das antun willst. Im Endeffekt hätte ein Backup und eine Neuinstallation von Ubuntu 18.04 LTS wohl auch nicht viel länger gedauert. Lehrreich war die Sache allemal. Leider kann ich Dir keine Schritt-für-Schritt-Anleitung geben, da ich immer wieder hin und her gesprungen bin. Allerdings sollte ich die wichtigsten Punkt abhandeln können, warum gewisse Dinge plötzlich nicht mehr funktionieren. Legen wir los? Was sich hier so einfach liest, hat mich den Großteil des Vormittags gekostet, weil es echte Ostereiersuche war.

Upgrade der PHP-Version

So, ich habe mich für PHP 7.1 entschieden. Der Grund? Erst habe ich auf PHP 7.2 aktualisiert und dabei ist mir die Nextcloud mit einem Internal Server Error 500 um die Ohren geflogen. Also vermutete ich (wahrscheinlich falsch), dass es am Paket php-mcrypt liegt, das es in dieser Form für PHP 7.2 nicht mehr gibt. Da Nextcloud 16 aber mindestens PHP 7.1 braucht und mich das wohl einige Zeit über die Runden bringt, habe ich mich dafür entschieden. Vielleicht versuche ich das Prozedere noch mit PHP 7.2 aber habe heute echt keinen Nerv mehr dafür.

Eine neue PHP-Version bekommt ich über das PPA von Ondřej Surý, vielen Dank dafür an dieser Stelle! (Du findest dort auch PHP 7.2 und 7.3)

Update: Mit PHP 7.2 funktioniert das auch, bis auf dass es das Pakete php7.2-mcrypt nicht mehr gibt, das aber nicht mehr benötigt wird? Ich bin mir gerade echt nicht ganz sicher, aber ich brauche es wohl nicht.

sudo add-apt-repository ppa:ondrej/php
sudo apt-get update
sudo apt install php7.1

Gut an dieser Stelle ist, dass PP 7.1 parallel installiert wird. Doof ist, dass nicht alle für 7.0 installierten Module automatisch mit installiert werden. Also wollte ich erst einmal herausfinden, was denn so auf meinem Ubuntu 16.04 installiert ist, damit einen groben Überblick bekomme:

sudo dpkg --get-selections | grep -v deinstall | grep php

Das hat im Endeffekt dazu geführt:

sudo apt install php7.1 php7.1-cgi php7.1-cli php7.1-common php7.1-curl php7.1-gd php7.1-intl php7.1-json php7.1-mcrypt php7.1-mysql

Ich dachte, das reicht …

Also biegen wir Apache auf die neue PHP-Version um, oder?

a2dismod php7.0
a2enmod php7.1

Module does not exist …. hmpf:

sudo apt install libapache2-mod-php7.1
a2enmod php7.1
service apache2 restart

Das hat dann auch eigentlich geklappt, aber Nextcloud ist mir mit Anlauf um die Ohren geflogen.

Internal Server Error ...

Internal Server Error …

OK, was sagt denn die Log-Datei (bei mir /var/www/nextcloud/data/nextcloud.log).

Irgendwas Cache …

Natürlich, ich bin ja ein Trottel. Es gibt ja neue php.ini-Dateien und die wollen mit dem opcache-Zeugs gefüllt werden. Mal sehen, welche php.ini wir denn brauchen:

php --ini

Also schreiben wir dort rein, was auch hingehört:

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

Wichtig: Für Apache ist in meinem Fall die Datei /etc/php/7.1/apache2/php.ini zuständig!

Mist, immer noch Internal Server Error. Also deaktivieren wir den Cache erst einmal in /var/www/nextcloud/config/config.php.

Redis wegen PHP 7.1 deaktiviert ...

Redis wegen PHP 7.1 deaktiviert …

Juhuu! Kein Server Error mit PHP 7.1 mehr, ABER …

… nun wirft die Seite keinen Internal Server Error mehr, aber dafür bleibt die Seite einfach weiß / blaank / nada / nichts. FFS #%$§#!

Gut, stellen wir das gesamte System auf PHP 7.1 um, habe ich bisher auch noch nicht gemacht:

sudo update-alternatives --set php /usr/bin/php7.1

Das bringt mich auch nicht weiter … hmmm … im Endeffekt hat die Installation von ein paar weiteren Paketen geholfen:

apt-get install php7.1-xml php7.1-zip php7.1-mbstring

Nun hat die Seite wieder funktioniert und auch das Caching mit APCu, aber kein Redis. Eigentlich würde das für eine 1-Mann-Installation reichen, aber es hat mich gewurmt. Außerdem kam beim Aufruf von PHP nun immer dieser Fehler

PHP Warning: PHP Startup: Unable to load dynamic library ‚/usr/lib/php/20160303/redis.so‘ – /usr/lib/php/20160303/redis.so: undefined symbol: igbinary_serialize in Unknown on line 0

Der Hinweis ist mit igbinary da, aber muss man auch erst einmal draufkommen. Behoben wurde der Fehler mit:

sudo apt-get install php-igbinary

HURRAAAAA! ES FUNKTIONIERT WIEDER ALLES!

Was ich irgendwann auch ausgeführt habe …

… aber den Effekt nicht bestimmen kann.

Im Laufe meiner Anstrengungen und nach dem Installieren aller Pakete, wurde auch Redis gestoppt und gestartet:

sudo service redis stop
sudo service redis start

Ebenso habe ich den gesamten Cache von Redis in die Tonne gekloppt:

sudo redis-cli FLUSHALL

Wie gesagt kann ich nicht mit Sicherheit sagen, ob diese Aktionen etwas gebracht haben, geschadet haben sie auch nicht.

Nextcloud 16 Beta 3 mit PHP 7.1

Nach der ganzen Aktion wurde mir dann auch prompt Nextcloud 16 Beta 3 über den Beta-Kanal angeboten und ich konnte es installieren.

sudo -u www-data php updater/updater.phar
Nextcloud 16 Beta 3 - ich schau Dich vielleicht morgen an ...

Nextcloud 16 Beta 3 – ich schau Dich vielleicht morgen an …

So für heute habe ich fertig … nun mach ich etwas, das mehr Spaß macht – den kleinen Zeh gegen Beton schlagen oder so …

Deine Hausaufgabe ist: Das Ganze nun mit PHP 7.2 zu probieren und mir dann sagen, ob es funktioniert! 😀

Swift ist ein bedingungsloses Krypto-Einkommen - ich hole mir jeden Tag meine 100 ab.

Du kannst gerne Deinen Senf zu diesem Beitrag geben: Hier geht es zu den Kommentaren




Schreiben macht durstig! Eine kleine Erfrischung kann daher nie schaden. Wem dieser freie Artikel gefallen hat, der darf mir gerne einen frisch gezapften Hopfen-Tee ausgeben (Paypal - der Spenden-Knopf
)
oder

Bitcoin-Adresse: 17F1hqc9LgsAC19DPv5PaRbqsEhuE8AmAA

Ethereum-Adresse: 0x9cc684575721dc07b629ad5d81b43ab4b992e76e

Verge-Adresse: DJaJtZeW494xhnRJJt19Lnt2R5pz7zRp5A

Ich freue mich über jede noch so kleine Spende. Vielen Dank und Prost!

 
NordVPN - günstig und ideal für Anfänger
 Alle Kommentare als Feed abonnieren

2 Kommentare zu “PHP 7.1: Version für Nextcloud 16 auf Ubuntu 16.04 aktualisiert”

  1. Orloff sagt:

    Das klingt nach einem interessanten Problem.

    Aus meiner eigenen Erfahrung kann ich hier zumindest zu einem Einsatz von PHP-FPM raten.
    Dies bringt den Vorteil, dass man Apache-Prozesse um den Resourcenverbrauch von PHP erleichtert, gleichzeitig aber die Möglichkeit bekommt, mehrere PHP-Versionen parallel zu installieren, zu konfigurieren, und zwischen diesen auch umschalten zu können.

    Ebenfalls kann man aber auch auf einem einzelnen System mehrere PHP-Versionen verwenden, in dem man die jeweilige PHP-Version in der entsprechenden Apache2-vHostkonfiguration referenziert.

    Vielleicht einmal drüber nachdenken, bei interesse gebe ich aber auch gerne Detailinformationen, wenn gewünscht.

    • jdo sagt:

      Hallo und danke ... das verstehe ich gerade nicht, ich kann doch auch ohne PHP-FPM mehrere parallel installieren und mit a2dismod und a2enmod umschalten? Ich benutze auf der produktiven Instanz wegen http2 sowieso php-fpm ...

      Update: stehe auf der Leitung ... mit php-fpm kann ich in den vHosts festlegen, welche Version ich verwenden will ... ja, das hätte aber mein Problem mit den fehlenden Paketen auch nicht gelöst 🙂

      Mein Problem ist/war ja, dass Nextcloud 16 nicht mehr mit PHP 7.0 will. Ich brauche nicht mehrere Versionen, sondern nur eine, die eben kompatibel ist.

      Trotzdem Danke für die Hinweise!

Antworten

Air VPN - The air to breathe the real Internet