Mein Server läuft auf Ubuntu und nginx. Mein Problem betrifftCron, ich möchte es (crontab) mit einer Datei starten -cron.txt, Sein Inhalt:
* * * * * /usr/bin/php /var/www/html/test.php >> /var/log/cron.log
Wenn ich es mit einem Befehl ausführe:, crontab /var/www/html/cron.txt
funktioniert es perfekt, Skripttest.phpwird ausgeführt. Aber wenn ich dasselbe mache, aber ein PHP-Skript verwende (Ausführung über den Browser):, exec('crontab /var/www/html/cron.txt');
funktioniert es nicht.
Beim Überprüfen des aktuellen Cronjobs mit dem Befehl: crontab -l -u www-data
wird die Zeile aus der Datei angezeigt, aber Cron erledigt seine Aufgabe nicht. Vielleicht hängt das mit Berechtigungsproblemen zusammen? Weil es nur funktioniert, wenn es als Root ausgeführt wird. Gibt es eine Möglichkeit, Cron zu zwingen, auch die Aufgaben von www-data auszuführen?
Antwort1
Bitte verwenden Sie /etc/crontab
. Diese Methode zur Ausführung von Cron-Jobs ermöglicht es Ihnen, der Aufgabe einen Benutzernamen hinzuzufügen. Das Ergebnis sieht dann so aus:
* * * * * www-data /usr/bin/php /var/www/html/test.php >> /var/log/cron.log
Sie können dies tun nano /etc/crontab
und die Zeile zur Datei hinzufügen.
Aber wenn ich dasselbe mache, aber ein PHP-Skript verwende (Ausführung über den Browser): exec('crontab /var/www/html/cron.txt');, funktioniert es nicht.
Wenn das nicht funktioniert, liegt wahrscheinlich ein anderes Problem vor als die Verwendung von „crontab“. Beispiel: Müssen Sie nicht umleiten? (D. h. > /dev/null 2>/dev/null &
am Ende Ihres Exec-Befehls verwenden?)
Antwort2
Ich habe erreicht, was ich wollte. Alles am Code in meinem ursprünglichen Beitrag ist in Ordnung. Das einzige, was ich hätte wissen müssen, ist, dass der Benutzer von www-data nicht schreiben darf /var/log
, also hatte ich dort keine Ausgabe. Und außerdem habe ich in meinem PHP-Skript versucht, eine Datei zu erstellen und etwas hineinzuschreiben. Dazu ist der absolute Pfad erforderlich, also sollte es so aussehen:
dirname(__FILE__) . '/myfile.txt';
Nach diesen Änderungen funktioniert alles wie erwartet.