Fehler bei Nextcloud cron.php auf TrueNAS CE

RolandR88

Lieutenant
Registriert
Jan. 2007
Beiträge
789
Hallo Leute,

ich habe ein Problem mit meiner Nextcloud-Instanz, das ich einfach nicht lösen kann.
Architektur: TrueNAS Community Edition 25.10.1 - Goldeye läuft lokal und darauf Nextcloud in App Version: 33.0.0
Zusätzlich läuft Immich und der externe Zugriff ist über cloudflared mit SSL eingerichtet.

Nun habe ich direkt in der NC-Instanz das Problem, dass ich die cron.php nicht als Cron Job ausführen kann.
Ich weiß wo und wie man einen Cron Job mit */5 anlegt, aber die Ausführung scheitert mit
Code:
[EFAULT] CronTask "/usr/bin/php -f /mnt/fastpool/Nextcloud/Appdata/cron.php > /dev/null" exited with 127 (non-zero) exit status.
Der Ort an dem das php-File liegt ist verifiziert, habe es auch mit nano angeschaut.

Wie kann ich das lösen? Ajax und Webcron scheinen zu funktionieren, aber damit stehen einige Features, bspw. bei den News nicht zur Verfügung.

Vielen Dank für Hinweise!
 
Unabhängig davon das die cron.php sich an einem seltsamen Ort befindet, du musst den Cronjob mit der Berechtigung des Webservers ausführen.

Beispiel wenn der User www-data ist:
sudo -u www-data /usr/bin/php -f /mnt/fastpool/Nextcloud/Appdata/cron.php

Solltest du den User nicht kennen kannst du das herausbekommen.
ls -alF /mnt/fastpool/Nextcloud/Appdata/cron.php
 
Zuletzt bearbeitet:
  • Gefällt mir
Reaktionen: Alter_Falter, RolandR88, GTrash81 und eine weitere Person
Moin,

hast du schon mal versucht
Code:
/usr/bin/php -f /mnt/fastpool/Nextcloud/Appdata/cron.php
manuell auszuführen? Ggf. musst du via sudo -u <user> noch zum HTTP-Server-Benutzer wechseln.

Z.B.

Sass:
sudo -u www-data /usr/bin/php -f /mnt/fastpool/Nextcloud/Appdata/cron.php
 
@Phate84 Guter Ansatz. Das manuelle Ausführen als www-data zeigt direkt, ob es ein Berechtigungsproblem ist oder an der PHP-Umgebung liegt. Auf TrueNAS CE kann der Webserver-Benutzer aber je nach Setup auch anders heißen, z.B. "www" oder "apache" statt "www-data".
 
Danke für die vielen Hinweise.
Also
Helge01 schrieb:
ls -alF /mnt/fastpool/Nextcloud/Appdata/cron.php
ergibt:
Code:
-rw-r--r-- 1 www-data www-data 1913 Mar  8 17:37 /mnt/fastpool/Nextcloud/Appdata/cron.php
ich würde also sagen, dass der user www-data ist.

Wenn ich aber versuche manuell mit Userangabe in der Shell auszuführen erhalte ich
Code:
truenas_admin@truenas[~]$ sudo -u www-data /usr/bin/php -f /mnt/fastpool/Nextcloud/Appdata/cron.php
sudo: /usr/bin/php: command not found
 
Das bedeutet du sagst im im Befehl nimm das Binary "/usr/bin/php", das liegt aber gar nicht da. Was ergibt den ein "which php" ?
 
d2boxSteve schrieb:
Was ergibt den ein "which php" ?
php not found, wobei – ich bin in der Shell von TrueNAS. Sollte ich das in der Shell der App Nextcloud machen?
 
Zuletzt bearbeitet:
dort, wo der cron ausgeführt wird weil der ja das php aufrufen soll ...
Ergänzung ()

Du kannst dich ja ganz nach oben stellen ( cd / ) und dann mit "find * | grep php" nach einem php binary suchen.
 
Dankeschön. Also in der Shell des NC Containers kann ich die php aufrufen, bringt auch sofort Notifications auf den verbundenen apps
Code:
su -s /bin/sh -c "php -f /var/www/html/cron.php" www-data

Was mir aber nicht klar ist: In TrueNAS lege ich die Cron Jobs ja direkt unter System > Advanced Settings an. Wie schreibe ich einen CMD so, dass er sich auf die Shell des NC-Containers referenziert?

In der root Shell von TrueNAS darf ich
Code:
docker exec -u www-data ix-nextcloud-nextcloud-1 php -f /var/www/html/cron.php

Edit: Was praktisch funktionieren würde ist, wenn ich als root ausführe
Code:
/usr/bin/docker exec -u www-data ix-nextcloud-nextcloud-1 php -f /var/www/html/cron.php
 
Oben sieht man dass du unter mnt ja scheinbar das filesystem der Nextcloud hast. Findest du darin die Binary php nicht? Das würd ich probieren. Der Benutzer www-data von Nextcloud den kennt Truenas ja eigentlich auch nicht weils quasi ein anderes Systems ist.
 
Habe es leider nicht herausfinden können. Lasse mal den CMD wie oben vom root laufen, bis ich eine bessere Idee habe.
 
Wenn du Nextcloud über die Apps von TrueNAS installiert hast, dann sollte eigentlich auch ein Cron verfügbar sein. Dieser ist standardmäßig jedoch deaktiviert. Schau doch mal in den Einstellungen ob du den Haken setzen kannst. Dann kannst du dir den ganzen Umweg sparen.
 
Zurück
Oben