Heim  >  Artikel  >  Backend-Entwicklung  >  ubuntu – Die PHP-Aufgabe in der geplanten Task-Crontab in Linux kann nicht ausgeführt werden. Bitte fragen Sie nach möglichen Gründen.

ubuntu – Die PHP-Aufgabe in der geplanten Task-Crontab in Linux kann nicht ausgeführt werden. Bitte fragen Sie nach möglichen Gründen.

WBOY
WBOYOriginal
2016-12-01 01:28:011323Durchsuche

Das test.php-Skript wartet auf die Ausführung. Dieses Skript kann in der lokalen Umgebung ausgeführt werden. Es kann auch durch manuelles Ausführen von php test.php unter Linux ausgeführt werden

<code>$name='./log/20161025.txt';
if(file_exists($name))
{
    file_put_contents($name, '定时任务开始了');
}</code>
Führen Sie crontab -e aus, um geplante Aufgaben zu bearbeiten

<code>* * * * * /usr/bin/php /home/wwwroot/demo/test.php > /var/log/cron.log </code>
Mein Versuch:

  • Führen Sie ps -ef | aus, um den Prozess der geplanten Aufgabe zu überprüfen. Dies bedeutet, dass die geplante Aufgabe ausgeführt wird, sodass kein Problem besteht, wenn die geplante Aufgabe nicht gestartet wird

  • Führen Sie /usr/sbin/service cron restart aus, um die geplante Aufgabe neu zu starten. Es gibt keinen Eintrag in cron.log und es gibt keinen Inhalt in 20161025.txt

  • Führen Sie chomd +x test.php aus, um die Berechtigungen zu erhöhen, aber es hat keine Auswirkung

  • Führen Sie which php aus und geben Sie /usr/bin/php zurück. Der PHP-Pfad ist korrekt

Ich kann den möglichen Grund noch nicht finden, bitte geben Sie mir ein paar Ideen

Ergänzung:

Die letzte geplante Testaufgabe kann ausgeführt werden

<code>$name=__DIR__.'/log/20161025.txt';

if(file_exists($name))
{
    file_put_contents($name,date('Y-m-d H:i:s',time())."\r\n",FILE_APPEND);
}</code>
Verwenden Sie das Skript zum Drucken der aktuellen Uhrzeit, das jede Minute ausgeführt wird

Antwortinhalt:

Das test.php-Skript wartet auf die Ausführung. Dieses Skript kann in der lokalen Umgebung ausgeführt werden. Es kann auch durch manuelles Ausführen von php test.php unter Linux ausgeführt werden

Führen Sie crontab -e aus, um geplante Aufgaben zu bearbeiten
<code>$name='./log/20161025.txt';
if(file_exists($name))
{
    file_put_contents($name, '定时任务开始了');
}</code>

Mein Versuch:
<code>* * * * * /usr/bin/php /home/wwwroot/demo/test.php > /var/log/cron.log </code>

    Führen Sie ps -ef | aus, um den Prozess der geplanten Aufgabe zu überprüfen. Dies bedeutet, dass die geplante Aufgabe ausgeführt wird, sodass kein Problem besteht, wenn die geplante Aufgabe nicht gestartet wird
  • Führen Sie /usr/sbin/service cron restart aus, um die geplante Aufgabe neu zu starten. Es gibt keinen Eintrag in cron.log und es gibt keinen Inhalt in 20161025.txt
  • Führen Sie chomd +x test.php aus, um die Berechtigungen zu erhöhen, aber es hat keine Auswirkung
  • Führen Sie which php aus und geben Sie /usr/bin/php zurück. Der PHP-Pfad ist korrekt
  • Ich kann den möglichen Grund noch nicht finden, bitte geben Sie mir ein paar Ideen

Ergänzung:

Die letzte geplante Testaufgabe kann ausgeführt werden


Verwenden Sie das Skript zum Drucken der aktuellen Uhrzeit, das jede Minute ausgeführt wird
<code>$name=__DIR__.'/log/20161025.txt';

if(file_exists($name))
{
    file_put_contents($name,date('Y-m-d H:i:s',time())."\r\n",FILE_APPEND);
}</code>

Der PHP-Pfad ist korrekt, aber beim Starten der geplanten Aufgabe ist das Arbeitsverzeichnis nicht das Verzeichnis, in dem sich Ihre PHP-Datei befindet, daher muss Ihr Code geändert werden

<code>$name=__DIR__.'/log/20161025.txt';
if(file_exists($name))
{
    file_put_contents($name, '定时任务开始了');
}</code>
Es fühlt sich an, als ob der Pfad falsch ist. Versuchen Sie, die relative Adresse im PHP-Skript in einen absoluten Pfad zu ändern

Der PHP-Pfad ist korrekt, der Fehler liegt in einigen Pfaden im PHP-Code. Vermeiden Sie beim Schreiben von Befehlszeilenprogrammen die Verwendung von Abhängigkeiten, z. B. relativen Verzeichnissen Sie starten Crontab, um Ihr PHP-Skript auszuführen, führen es einmal manuell aus und schon wissen Sie, wo der Fehler liegt.

Drucken Sie Ihren relativen Pfad. Es darf nicht der Weg sein, den Sie sich vorgestellt haben.



Sie können

prüfen, ob die Datei generiert wurde.

vor

. locate 20161025.txt locate updatedb Stellen Sie sicher, dass Sie Berechtigungsprobleme haben. Führen Sie das folgende crontab -l aus, um sicherzustellen, dass Sie die geplante Aufgabe erfolgreich hinzugefügt haben

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn