it-swarm.com.de

Führe PHP script in cron job aus

In unserem centos6 Server. Ich möchte als Apache-Benutzer ein PHP-Skript im Cron-Job ausführen, aber leider funktioniert es nicht.

hier ist die ausgabe von crontab (crontab -uapache -e)

24 17 * * * php /opt/test.php

und hier ist der Quellcode der "test.php" -Datei, der gut mit dem "Apache" -Benutzer als Eigentümer zusammenarbeitet.

<?php exec( 'touch /opt/test/test.txt');?>

Ich versuche, PHP durch den vollständigen Pfad von PHP (/ usr/local/php/bin/php) zu ersetzen, aber es funktioniert auch nicht

Vielen Dank im Voraus, bitte helfen Sie mir

27
Khalilos

Automatisierte Aufgaben: Cron

Cron ist ein zeitbasierter Planungsdienst für Linux/Unix-ähnliche Computerbetriebssysteme. Cron-Jobs werden zum Planen von Befehlen verwendet, die regelmäßig ausgeführt werden sollen. Sie können Befehle oder Skripte einrichten, die zu einer festgelegten Zeit wiederholt ausgeführt werden. Cron ist eines der nützlichsten Tools unter Linux- oder UNIX-ähnlichen Betriebssystemen. Der Cron-Dienst (Daemon) wird im Hintergrund ausgeführt und überprüft ständig die Datei /etc/crontab , /etc/Cron. /* Verzeichnisse. Es überprüft auch das Verzeichnis /var/spool/cron/.

Cron-Aufgaben konfigurieren

Im folgenden Beispiel werden die Cron-Tasks mit dem folgenden Befehl automatisch alle zehn Minuten aktiviert:

*/10 * * * * /usr/bin/php /opt/test.php

Im obigen Beispiel steht */10 * * * * für den Zeitpunkt, zu dem die Aufgabe ausgeführt werden soll. Die erste Zahl steht für Minuten - in diesem Fall alle zehn Minuten. Die anderen Zahlen repräsentieren jeweils Stunde , Tag , Monat und Wochentag .

* ist ein Platzhalter und bedeutet "jedes Mal" .

Beginnen Sie mit der Ermittlung Ihrer [~ # ~] php [~ # ~] Binärdatei, indem Sie Folgendes in die Befehlszeile eingeben:

whereis php

Die Ausgabe sollte ungefähr so ​​aussehen:

php: /usr/bin/php/etc/php.ini/etc/php.d/usr/lib64/php/usr/include/php/usr/share/man/man1/php.1 .gz

Geben Sie den vollständigen Pfad in Ihrem Befehl korrekt an.

Geben Sie den folgenden Befehl ein, um cronjob einzugeben:

crontab -e

Um zu sehen, was Sie in crontab haben.

EDIT 1:

Um den vim editor ohne Speichern zu verlassen, klicken Sie einfach auf:

Shift+:

Und dann tippe q!

71
Ilia Rostovtsev

Ich hatte das gleiche Problem ... Ich musste es als Benutzer ausführen.

00 * * * * root /usr/bin/php /var/virtual/hostname.nz/public_html/cronjob.php
11
Philip

Möglicherweise müssen Sie den Cron-Job als Benutzer mit Berechtigungen ausführen, um das Skript PHP ausführen zu können. Versuchen Sie, den Cron-Job mit dem Befehl runuser (man runuser). Oder erstellen Sie eine System-Crontable und führen Sie das Skript PHP als autorisierten Benutzer aus, wie in @Philip beschrieben.

Ich gebe eine detaillierte Antwort, wie man Cron in diesem Stackoverflow-Beitrag benutzt.

Wie schreibe ich einen Cron, der jeden Tag um Mitternacht ein Skript ausführt?

1
Russell E Glaue