cronjob bei MOODLE wird nicht ausgeführt

  • Habe die Applikation MOODLE auf einer Subdomain über netcup-Installationsautomatik installiert. Alles läuft prima, nur der cronjob wird nicht ausgeführt. Habe im WCP unter geplante Aufgaben eine entsprechenden Aufgabe eingerichtet. Leider wird der Dienst nicht ausgeführt, obwohl ich beide Varianten als Befehl ausprobiert habe.

    1. Variante: /usr/local/php56/bin/php /subdomain/moodle/admin/cli/cron.php >/dev/null

    2. Variante: /usr/bin/wget -q -O /dev/null/ http://subdomain/moodle/admin/cron.php

    Ein direkter Aufruf über die Browseradresse schlägt fehl .... !!! Der Internetzugriff für diese Seite wurde deaktiviert. !!!

    Innerhalb der Anwendung lassen sich die entsprechenden cronjob manuell starten und ohne Fehler auch beenden. Bei der externen Ausführung über WCP-cronjob kommt als Fehlermeldung: "netcup.de" no match server sowie die Datei robot.txt wurde nicht gefunden.

    Momentan fällt mir keine Lösungen oder Ursache für das Problem ein?

    Wie lassen andere MOODLE unter netcup-Webhosting laufen???

  • Habe entsprechend der obigen Empfehlung den Befehl einmal ausgeführt und nachfolgende Fehlermeldung erhalten:

    Befehl über SSH: /usr/local/php56/bin/php /subdomain/moodle/admin/cli/cron.php

    Ausgabe: $CFG->dataroot is not configured properly, directory does not exist or is not accessible


    Wie kann ich nun weiter vorgehen??


    VG sonni_14

  • Ich kenne mich mit Moodle zwar nicht aus, aber ich denke,dass das Datenverzeichnis relativ eingetragen wurde also z.B. ../Data/. Hast du schon versucht den kompletten, nicht relativen Datenpfad in Moodle einzustellen? Also von / (root/wurzelverzeichnis) aus?

  • Habe den Befehl über eine SSH-Verbindung wie folgt aufgerufen:

    /usr/local/php56/bin/php /var/www/vhost/....kompletter Pfad zu moodle...../moodle/admin/cli/cron.php


    Sollte eigentlich korrekt sein.


    Stellte jetzt fest, dass der browsergestützte Aufruf der cron.php trotz entsprechender Freigabe innerhalb der MOODLE-Sicherheit durch den Server ebenfalls eine Fehlermeldung generiert:


    !!! Der Internetzugriff für diese Seite wurde deaktiviert. !!!


    Werde mich wohl an den Kundensupport von netcup wenden müssen.

    Oder kann mir ein moodle-Appliktionsuser von netcup-hosting weiterhelfen?


    VG sonni_14

  • Habe den Befehl über eine SSH-Verbindung wie folgt aufgerufen:

    /usr/local/php56/bin/php /var/www/vhost/....kompletter Pfad zu moodle...../moodle/admin/cli/cron.php

    Das funktioniert nicht, der erste Versuch (Deine 1. Variante aus dem ersten Post) war schon richtig. Was für ein Wert wird denn in der config.php für $CFG->dataroot gesetzt?


    Werde mich wohl an den Kundensupport von netcup wenden müssen.

    Ich denke nicht, dass der Support helfen kann, da er sich wohl eher nicht mit moodle auskennt.

  • 8) Cronjob bei MOODLE laufen lassen bei netcup-hosting:


    Da ich das Problem, einen nicht laufenden cronjob bei moodle, hier auf die Tagesordnung setzte, möchte ich nun nach einiger Zeit intensiven Nachdenkens und Probierens das Problem als gelöst melden.


    Nach dem großen Update auf die aktuelle Moodle-Version 3.4, welche ohne Probleme durch die Updateautomatik von netcup funktionierte (dafür den Kolleginnen und Kollegen vielen Dank) habe ich mich noch einmal mit der Materie befasst.


    Der Lösungsansatz war richtig, nur die Berechtigungen bei der config.php - Datei ergaben das Problem.

    Der Fehler lag bei

    $CFG->dataroot = '/var/www/vhosts/hosting****.af****.netcup.net/*domainname*/moodle/moodledata';

    Diesen absoluten Verweis benötigt MOODLE beim Website-Aufruf, sonst kann die Anwendung nicht starten, aber bei dem PHP-Script von cron.php erzeugt dies einen Zugrifffehler auf den Ordner moodledata.


    Meine funktionierende Lösung lautet:

    1. Lege im MOODLE-Ordner von der Datei config.php eine Kopie an z.B. config_1.php

    Ersetze in config_1.php den absoluten Ordnerverweis durch einen relativen Ordnerverweis:

    // $CFG->dataroot = '/var/www/vhosts/hosting.........................'; // Kommentiert diese Zeile -- wird nicht mehr ausgeführt

    $CFG->dataroot = '/domainname/moodle/moodledata';

    2. Ändere in der cron.php Datei im Ordner moodle/admin/cli den Namen der aufzurufenden Konfigurationsdatei:

    define('CLI_SCRIPT', true);


    // require(__DIR__.'/../../config.php');

    require(__DIR__.'/../../config_1.php');

    require_once($CFG->libdir.'/clilib.php'); // cli only functions

    require_once($CFG->libdir.'/cronlib.php');


    3. Anschließend im CPW bei den geplanten Aufgaben:

    /usr/local/php70/bin/php /domainname/moodle/admin/cli/cron.php


    Beachten Sie, dass MOODLE 3.4 mindestens PHP7.0 benötigt.


    Danach läuft der Cronjob ohne Probleme.


    VG sonni14

  • Es geht sogar deutlich einfacher, wenn die Konfigurationsdatei ein PHP-Script ist: https://forum.netcup.de/anwendung/sonstige-anwendungen/p72720-owncloud-console-occ-funktioniert-nur-nach-config-änderung-und-legt-weboberfläche-lahm/#post72720


    Einfach prüfen, ob man in der CLI-SAPI ist. Völlig ohne zusätzliche Konstanten oder Dateien. Das müsste dann wahrscheinlich so aussehen:

    PHP
    $CFG->dataroot = (php_sapi_name() != 'cli') ? '/var/www/vhosts/hostingxxxx.afxxx.netcup.net' : '') . '/httpdocs/moodle/moodledata';

    Wenn Du mir sagst, in welchem Ordner die Konfigurationsdatei relativ zum moodledata-Ordner liegt, kann ich es so ändern, dass sich das Script den Pfad über __DIR__ selbst sucht, ohne dass man den absoluten Pfad braucht… ;)


    Warum das bei so großen Projekten wie OwnCloud oder Moodle nicht von Haus aus der Fall ist, verstehe ich bis heute nicht.



    MfG Christian

    "Wer nur noch Enten sieht, hat die Kontrolle über seine Server verloren." (Netzentenfund)

  • Hallo Christian,


    vielen Dank für die Empfehlung.

    Da ich zur Zeit mit anderen Arbeitsprojekten etwas überhäuft bin, werde ich es umsetzen, wenn ich meine Installation von MOODLE https - fähig mache.

    Bis dahin


    viele Grüße von sonni_14