Benötige Hilfe beim Cron Job für Nextcloud anlegen

  • Hallo zusammen,


    ich habe auf deinem Webhosting Web Expert L Paket eine Nextcloud 12 laufen.

    Das funktioniert soweit auch sehr gut. Nun wollte ich aber einen Cron Job anlegen, damit Benachrichtugngen usw. sauber verschickt werden.


    Dazu habe ich im Webhostingcontrolpanel eine Aufgabe mit folgendem Inhalt angelegt:

    Code
    1. /usr/bin/php /httpdocs/cloud/cron.php

    Wird dieser cron ausgeführt, erhalte ich per Mail aber folgenden Fehler:

    Quote

    PHP Parse error: syntax error, unexpected '[' in /httpdocs/cloud/cron.php on line 117

    Ich bekomme es einfach nicht hin, dass der Cron sauber druchläuft.

    Hat jemand eine Idee woran das liegen kann? am Cron habe ich nichts verändert, ich glaube nicht, dass es ein Fehler in der Datei ist. Dann hätten diesen Fehler ja viel mehr Nutzer.

    Ich habe schon php 7.0 und php7.1 ausprobiert. Beides führt zum gleichen Fehler.


    Für Hilfe wäre ich sehr dankbar.

    Gruß



    EDIT: Ich konnte den Fehler schon etwas eingrenzen. Der Aufruf für die cron.php war wohl falsch. Er musste wie folgt lauten:

    Code
    1. /usr/local/php71/bin/php /httpdocs/cloud/cron.php

    Nun bekomme ich keinen parsing Fehler mehr. Dafür erhalte ich jetzt folgende Fehlermeldung:


    Quote

    Your data directory is invalid

    Please check that the data directory contains a file ".ocdata" in its root.

    Cannot create "data" directory

    This can usually be fixed by giving the webserver write access to the root directory. See https://docs.nextcloud.org/ser…?to=admin-dir_permissions

    Mein data Verzeichnis liegt ausserhalb des httpdocs Verzeichnisses - wie von Nextcloud auch empfohlen. Der Pfad ist in der config.php auch hinterlegt und es funktioniert bis auf den cronjob auch alles....

  • Danke de_bonner.


    ich hatte zur selben Zeit den Beitrag editiert.

    Nach der Änderung war der parsing Fehler auch weg.


    Nun habe ich aber das Problem, dass der cronjob mit dem oben genannten Fehler immer noch fehl schlägt.


    In diesem Beitrag hatte KORN3Y auch das Problem. Er hatte dann dies in der config.php angepasst


    Code
    1. 'datadirectory' => ((php_sapi_name() != 'cli') ? '/var/www/vhosts/hostingxxxx.afxxx.netcup.net' : '') . '/httpdocs/data',

    Natürlich mit den angepassten Pfaden. Mache ich das, läuft meine Nextcloud aber gar nicht mehr...

  • Wenn das Datenverzeichnis selber angelegt wurde, dann stimmen die Berechtigungen nicht. Der Server setzt die Verzeichnisberechtigung (Gruppenberechtigung) auf psaserv und wenn man das Verzeichnis selber anlegt, dann erhält es die Berechtigung psacln. Leider funktioniert chown nicht beim Webhosting.

  • Fehlermeldung?


    Wahrscheinlich nur ein einzelnes falschen Zeichen o.ä.

    Hi Killerbees19,


    die Fehlermeldung in der Mail habe ich im 1. Beitrag fast ganz am Ende eingetragen (Zitat . Your data directory is invalid....).

    Ich habe eigentlich den Eintrag von Dir übernommen und meine Pfade eingetragen. Ich wüsste nicht wo ich ein falsches Zeichen eingetragen haben könnte :(

    Wenn das Datenverzeichnis selber angelegt wurde, dann stimmen die Berechtigungen nicht. Der Server setzt die Verzeichnisberechtigung (Gruppenberechtigung) auf psaserv und wenn man das Verzeichnis selber anlegt, dann erhält es die Berechtigung psacln. Leider funktioniert chown nicht beim Webhosting.

    Hi de_bonner,


    das klingt für mich erstmal nicht nachvollziehbar. Der Cronjob läuft auf den Systemuser und der ist der Besitzer des Data Verzeichnisses.

    Das mit der Gruppe stimmt - hier ist psalcn berechtigt. Aber wenn ich das original Data Verzeichnis innerhalb der Nextcloud Installation nutze ist das auch für die Gruppe psalcn berechtigt. Wie kann den ein Verzeichnis erstellt werden, welches für die Gruppe psaserv berechtigt ist?


    In diesem Beitrag hatte KORN3Y auch das Problem. Auch er hat die Lösung von Killerbees19 genutzt und hat soweit ich das richtig sehe sein Data Verzeichnis ausserhalb von httpdocs.


    Mit der "normalen" Config - also dem festen Pfad ( 'datadirectory' => '/var/www/vhosts/hostingxxxx.afxxx.netcup.net/files-nc',) zu dem Data Verzeichnis funktioniert es mit den bestehenden Berechtigungen ja auch. Nur läuft so der CronJob nicht.

  • Hi Christian,


    erstmal danke für deine Hilfe.


    Du magst mich jetzt vielleicht für total bekloppt halten, aber ich habe heute die Änderung über webhostingcontrolpanel.de vorgenommen. Habe den Editor von Parallels genutzt und jetzt funktioniert es. Der CronJob läuft mit deinem datadirectory Eintrag... Ich verstehe es nicht aber gut.


    Vielen Dank für diesen Code. Ich wäre niemals darauf gekommen!! Ich habe mal im Nextcloud Forum die Info eingestellt.

    Ich hoffe nur, dass es in Zukunft nicht irgendeine Änderung gibt und dein "Trick" nicht mehr funktioniert. Dann wäre ich aufgeschmissen.

  • Ich hoffe nur, dass es in Zukunft nicht irgendeine Änderung gibt und dein "Trick" nicht mehr funktioniert. Dann wäre ich aufgeschmissen.

    Kommt auf dein Updateverhalten an, da ich jedes produktive Release mitnehme habe ich diesen "Trick" schon ein paar mal machen müssen, da bei dem Update natürlich alle Config Files wieder die absoluten Pfade eingetrichtert bekommen...

  • Ich habe gerade das gleiche Problem damit gelöst. :-) Danke auch an KORN3Y

  • Ich muss dieses Thema mal aufwärmen :


    Beim Update auf die NextCloud 14.0.1 musste ich Indizes per occ aktualisieren.

    Habe hier den Tipp mit der Anpassung der config.php befolgt und das hat dann auch wunderbar funktioniert.

    Cronjob habe ich auch angepasst (vorher php-Skript jetzt "Befehl ausführen") :

    Code
    1. /usr/local/php72/bin/php -f /httpdocs/nextcloud/cron.php


    und genau das klappte nicht !

    Fehlermeldung war : kann die php-Datei nicht finden.


    Kann noch jemand das Problem bestätigen bzw. prüfen, ob das immer noch mit eigenem Cronjob funktioniert ?

  • Hay,

    Fehlermeldung war : kann die php-Datei nicht finden.

    Standardfehler der Nutzer bei cron ist, dass jeder Pfad absolut im Filesystem sein muss. /httpdocs sieht wie ein absoluter Pfad aus, ist er aber nicht...


    leg mal


    PHP
    1. <?php
    2. echo $_SERVER["DOCUMENT_ROOT"]
    3. ?>

    dorthin wo dieses cron.php liegt und rufe es auf. Dann bekommst Du den echten absoluten Pfad angzeigt und den trägst Du bei cron ein.

    Selbstverständlich dürfen innerhalb der cron.php auch keine relativen Pfade vorkommen.


    CU, Peter

  • Ja, aber so kann ich mit dem config.php Workaround für die datadirectory nicht arbeiten !


    Never mind : cronjon funktioniert jetzt so wie es ist, solange ich den Workaround nicht anwende

    (und das mache ich nur temporär wenn ich was mit dem occ in der Konsole fixen muss).