PHP-Version und WinSCP

Hallo,
Ich verwalte meine Nextcloud in einem shared webspace über WinSCP.
Dort kann ich Befehle wie
php7.4 occ db:add-missing-indices
aber nicht
php8.0 occ db:add-missing-indices eingeben.
Fehler: An unhandled exception has been thrown:
OCP\HintException: [0]: Memcache \OC\Memcache\APCu not available for local cache (Is the matching PHP module installed and enabled?)

Wenn ich in der gleichen Eingabeaufforderung in WinSCP php -v eingebe kommt:
PHP 8.0.20 (cli) (built: Jun 14 2022 10:29:54) ( NTS )
Copyright (c) The PHP Group
Zend Engine v4.0.20, Copyright (c) Zend Technologies
with Zend OPcache v8.0.20, Copyright (c), by Zend Technologies

Wie entferne ich PHP 7.4 komplett und aktiviere 8.0.

sudo update-alternatives --config php

Nummer auswählen.
Enter

Du brauchst es nicht Entfernen.

service php8.0-fpm restart
service apache2 restart

@Nanu Ich denke bei einem “shared webspace” kann man die aufgeführten Befehle nicht auswählen.
@rheadi Eine wirkliche Idee habe ich nicht. Such mal bzgl. des Problems im Internet inkl. Suche nach dem Provider. Welchen Provider verwendest du? Welches “shared webspace” - Paket?

Das musst du den Anbieter deines Webspaces fragen bzw. hat der hoffentlich Dokumentation dazu. Bei dem Anbieter, bei dem ich vor Jahren meine ersten Gehversuche, damals noch mit OwnCloud, gemacht habe, konnte man die PHP Module und die verschiedenen Versionen im Web Admin Panel (C-Panel) des Hosters verwalten.

1 Like

Danke erst mal für die Antworten.
Befehle probiere ich mal aus und frage den Anbieter.
Ja, den Server kann ich mit meinem shared Webspace Paket nicht beeinflussen, kein sudo.
Aber warum gibt PHP -v die Version 8.0 aus aber obige Befehle nur 7.4 akzeptieren?

Ich gebe Rückmeldung.

Versuche mal
which php7.4
Dort sollte ein Pfad zur Datei ausgegeben werden.
Geh in den Ordner und schaue, ob es dort andere “php-Programme” gibt.
Dort sollte php stehen und das ist nach deiner Ausgabe Version 8.

Gebe doch einfach folgendes ein, welches dann wohl PHP 8 verwendet.
php occ db:add-missing-indices

sudo macht auch nur Sinn, wenn man die Identität zu root oder z. B. zu www-data (Webserver/Nextcloud-Benutzer auf “normalen” Systemen) ändern will. Da alles unter deiner Identität läuft, braucht du sudo natürlich nicht.

update-alternatives --config php
gibt das aus, aber Permission denied und
php8.1 occ db:add-missing-indices
funktioniert auch nicht, auch nur php … ohne Version nicht.

Sieht aus, dass meine Webspace das aktuelle PHP verwendet, jedoch Befehle PHP7.4 benötigen.

Danke, habe obiges alles probiert, bringt nichts, ich muss den Anbieter fragen.

THX!

Hast du mal den Ordner mit den PHP-Programmen gesucht wie ich oben geschrieben habe? Werden sie dort aufgeführt? Vielleicht irgendwelche symbolischen Links auf php?

Welche Nextcloud-Version hast du überhaupt? Oder habe ich das überlesen? Das wäre noch wichtig für die richtige PHP-Version. Aber ich hoffe deine Nextcloud-Version ist nicht zu alt, dass das relevant sein könnte.

klar, alles probiert und geschaut!
which php7.4 ergibt
/usr/bin/php7.4 (ist im root, keine Rechte).
Dort gibts nur einen Linkt php, der nach /home/bin/php zeigt mit Inhalt /usr/bin/php8.0 (das kann ich ändern).
Du vermutetest, das da 7.4 steht, nein, 8.0.

Habe Nextcloud-Version 24.0.4.

Ich glaube ich habe dein Problem vollkommen falsch verstanden bzw. falsch interpretiert. Es ist ja schon so, dass PHP8.0 existiert und auch aufgerufen wird. Es ist nur der Fehler, den PHP8.0 produziert. Der Fehler (s.o.) basiert wohl darauf, dass du entweder APCu nicht konfiguriert hat oder für PHP8.0 das Modul nicht bereitsteht.
Entweder Konfiguration nicht ausgeführt
Konfiguration APCu bei Nextcloud
(da PHP7.4 und PHP8.0 die gleiche config.php verwenden, kann man diesen Punkt eher ausschließen)
oder Modul nicht vorhanden:
php8.0 -m
Falls das Modul fehlt (kannst zum Vergleich noch php7.4 -m versuchen), dann
a.) in config.php APCu deaktivieren (schlechtg für die Performance, aber ein Versuch wert)
b.) evtl. schauen wie du das Modul bekommst (wohl Provider fragen)

Das steht im obigen Link:

APCu is a data cache, and it is available in most Linux distributions. On Red Hat/CentOS/Fedora systems install php-pecl-apcu. On Debian/Ubuntu/Mint systems install php-apcu.

1 Like

devnull, super, jetzt kommen wir der Sache näher.
In config.php die Zeile mit APCu deaktiviert, dann funktioniert php8.0 occ db:add-missing-indices :+1:
Ich habe noch im Dateisystem hinweise zu php8.1 gefunden, das funkt. nicht, aber erst mal egal, die php-Version wird wohl mein Anbieter aktualisieren und aktivieren, kann ich auch auswählen im Kundencenter, momentan eben 8.0.
‘memcache.local’ => ‘\OC\Memcache\APCu’, aktiviere ich natürlich wieder.
Jetzt kommt es drauf an, was das alte php7.4 sicherheitstechnisch bedeutet, deswegen ja der Thread?


php8.0 -m

[PHP Modules]
apcu
… (viele weitere Module)

php7.4 -m

[PHP Modules]
apc
apcu
… (viele weitere Module)
xmlrpc

Es fehlen also 2 Module in php8.0, apc und xmlrpc.

8.1 ist auf automode
mach mal
php8.1 -m

Und gib mal

systemctl status redis

ein.

@Nanu
Ich weiß ja nicht, ob dort Redis läuft. Davon abgesehen, dass mir noch niemand den Vorteil von Redis gegenüber ACPu bei Einzelsystemen erklärt hat. Existiert der überhaupt? Redis ist doch vor allen eine verteilte Online-Datenbank hatte ich gedacht. Bei einem Einzelsystem ist doch wenig verteilt, oder?

@rheadi
Bei ACPu musst du zwischen Kommandozeile (CLI) und Nextcloud unterscheiden. Wenn es auf der Kommandozeile nicht funktioniert, kannst du es temporär deaktivieren und anschließend wieder aktivieren, damit du es in deiner Nextcloud nutzt. Aber vielleicht lohnt sich selbst ACPu in deiner Nextcloud nicht. Wenn du mit der Performance zufrieden bist (da du vielleicht nur ein Anwender bist), dann kannst du es auch deaktiviert lassen. Auf kurz oder lang solltest du dir vielleicht eine echte Nextcloud besorgen.

@bb77 hat in einem anderen Thread dazu geschrieben:

Bei 50+ Benutzern mag er Recht haben. Aber bei deinem Webspace-System. Ich weiß ja nicht. Für meine privaten Systeme konfiguriere ich ACPu und kein Redis.

Ich will dazu noch sagen, dass Ich auch APCu für den lokalen Memory Cache nutze, weil es schneller ist (zumindest in der Theorie) mit nur zwei Usern und den typischen Workloads von Privatusern. Bei vielen Usern kommt es aber irgendwann an seine Grenzen, braucht zuviel RAM und dann ist Redis effizienter.

Redis habe ich aber trotzdem installiert, wegen dem File Locking Cache. Braucht man bei zwei Usern auch nicht wirklich, aber hey kostet ja nichts also why not… :wink: Hat man viele User erhöht sich aber der Load auf die Datenbank zu stark, wenn man keinen Cache für das Transactional File Locking nutzt, und dann braucht man halt Redis trotzdem, unabhängig davon was man als lokalen Memory Cache nutzt.

Danke für die Infos. Schade, dass es wohl von Nextcloud dazu keine wirklichen Empfehlungen gibt oder ich habe sie einfach nur überlesen.

Naja das ist das was ich mir aus vielen Artikeln im Netz und auch aus den Infos aus den Docs so zusammengereimt habe. Wirkliche Benchmarks habe ich nie gmacht.

Für Privatuser und Kleinfirmen mit 1-20 Usern und eher kleinem Load reicht es imho aber auch, wenn man einfach die Empfehlungen in den Docs oder den bekannteren Tutorials im Internet berücksichtigt. Die beinhalten meistens APCu für local memory cache und Redis for filelocking cache. Bei 50+ User sieht es dann halt u.U. wieder anders aus. Und natürlich ist auch die HW noch entscheidend. Auf einem Raspi mit 2GB RAM wird man natürlich nie die gleiche Leistung rausholen können, wie auf einm echten Server mit schnellem NVMe Storage und 128GB RAM, egal was man alles optimiert :wink:

Tuning von Datenbanken, Cache, PHP, Storage etc ist schlussendlich eine kleine Wissenschaft und hängt sim Detail stark vom jeweiligen Nutzungsverhalten und der verwendeten HW ab. Da gibt es in der Regel keine “one fits them all” Lösungen. Für sehr grosse Instanzen mit hunderten oder gar tausenden von Usern, hat man aber in der Regel dann auch ein internes IT Team, das sich mit diesen Dingen wirklich auskennt, oder man beauftragt einen externen Dienstleister.

@bb77
Auch wenn es etwas offtopic ist, danke für deine Info.
Für sehr große Installationen habe ich vor einiger Zeit dieses PDF gefunden.

php8.1 -m listet viel weniger Module, ist vom Webspace-Anbieter auf dem Kundenportal nicht gelistet, nur 8.0.
systemctl status redis bringt Failed to connect to bus: No such file or directory