Führen Sie eine PHP-Datei in einem Cron-Job mit CPanel aus


102

Ich versuche nur, ein PHP-Skript mit einem Cron-Job in CPanel auszuführen - ist dies die richtige Syntax:

/usr/bin/php -q /home/username/public_html/cron/cron.php >/dev/null

Ich erhalte keine E-Mail-Benachrichtigungen, dass ein Cron abgeschlossen wurde. Muss ich mit der PHP-Datei etwas Spezielles tun?


25
Ich denke, es ist ziemlich relevant, da viele Projekte auf Cpanel gehostet werden und man wissen muss, wie man Cron-Jobs ausführt, wenn nötig
William

7
Wenn cPanel für Serverfehler oder Stapelüberlauf nicht zulässig ist, wo sollten Fragen dazu stehen?
Schwefel

8
ziemlich ironisch, dass diese Frage für StackOverflow als "Off-Topic" eingestuft wurde, aber die aktivste Frage ist, die ich je hier hatte ..... Ich hoffe, sie hat anderen geholfen :)
Zabs

Danke @Tatu Ulmanen Es funktioniert bei mir!
Tushar Rmesh Saindane

Antworten:


66

Im Crontab-System:

  • /usr/bin/phpist PHP - Binär - Pfad (anders in einigen Systemen ab: freebsd /usr/local/bin/php, Linux: /usr/bin/php)
  • /home/username/public_html/cron/cron.php sollte dein PHP-Skriptpfad sein
  • /dev/null sollte cron Ausgabe sein, zB: /home/username/stdoutx.txt

So können Sie Ihren Cron überwachen, indem Sie die Cron-Ausgabe anzeigen /home/username/stdoutx.txt


1
Ich benutze dies jetzt und es funktioniert, aber ich bekomme keine E-Mail-Benachrichtigung. Ideen, warum nicht? php /home/username/public_html/cron/cron.php note Ich musste die folgende Zeile oben in das PHP-Skript # einfügen! / usr / bin / php -q
Zabs

Wenn du willst, dass Cronjob E-Mails für dich sendet, musst du PHP Mail () verwenden. Ich glaube nicht, dass Cronjob ein automatisches Mailsystem hat, es sei denn, du verwendest Shell Scripting oder PHP.
Somy A

1
Wenn ich in cPanel auf die Registerkarte "Cronjobs" klicke, werden auf der Seite zwei Felder angezeigt - eines für den Befehl, den Sie ausführen möchten, und eines für die E-Mail-Adresse, an die die Ausgabe gesendet werden soll. Dies ist in cPanel 11.
user3640967

2
Was wird der volle Befehl sein? Ich meine vollen Befehl in einer Zeile mit allen Optionen.
Auj

@SomyA Könnten Sie mir bitte den Befehl zum Ausführen der Java-Skriptdatei mitteilen?
Narender Reddy


29

>/dev/null verhindert, dass cron Mails verschickt.

Meiner Meinung nach ist es besser, das phpSkript selbst zu erstellen, um sich um die Protokollierung zu kümmern, als nur etwas an cron auszugeben


darf ich fragen, wie du das machst? Gibt cronTabs sowieso nichts aus? Das mache ich auch >/dev/null 2>&1am Ende ...
ThomasK

@ThomasK Wenn du eine Aufgabe wie diese machst, /path/to/file.php > /dev/nullwird es still sein.
K102

19

Dies ist der einfachste Weg:

php -f /home/your_username/public_html/script.php

Wenn Sie die Skriptausgabe in einer Datei protokollieren möchten, fügen Sie diese am Ende des Befehls hinzu:

>> /home/your_username/logs/someFile.txt 2>&1


16

Das ist der Weg:

/usr/bin/php -q /home/username/public_html/yourfilename.php >/dev/null

11

Diese Cron-Linie funktionierte für mich auf Hostgator VPS mit cpanel.

/usr/bin/php -q /home/username/public_html/scriptname.php

10

Ich hatte Probleme mit / usr / bin / php auf CPanel, da es als "cgi-fcgi" -Binärdatei und nicht als "cli" kompiliert ist. Versuchen Sie es mit / usr / local / bin / php oder verwenden Sie stattdessen 'php', da es ohnehin das erste im Pfad ist:

php /path/to/script.php

Wenn Sie das Skript als ausführbare Datei ausführen möchten, geben Sie ihm + x Dauerwellen und verwenden Sie Folgendes als erste Zeile des Skripts:

#!/usr/bin/env php

6

Ich hoffe, Ihr Problem liegt auch bei Path & PHP Binary. Wenn Sie den Pfad gemäß den älteren Antworten festgelegt haben, verwenden Sie bitte php-cli anstelle des Befehls php, während Sie den Cron-Job ausführen.

Möglicherweise php_sapi_name()wird nicht zurückgegeben cli. Es gibt etwas anderes wie cgi-fcgietc. zurück.

/usr/bin/php-cli -q /home/username/public_html/cron/cron.php >/dev/null

Ich hoffe es wird helfen.


3

Dies funktioniert gut und sendet auch E-Mail:

/ usr / bin / php /home/xxYourUserNamexx/public_html/xxYourFolderxx/xxcronfile.php

Die folgenden zwei Befehle funktionieren ebenfalls einwandfrei, senden jedoch keine E-Mails:

/ usr / bin / php -f / home / Wie oben

php -f / home / Wie oben


2

Vorgeschlagen von Experten.

/usr/local/bin/php /home/username/public_html/path/to/cron/script


0

Gehen Sie für domänenspezifische Multi-PHP-Cron-Jobs folgendermaßen vor :

/usr/local/bin/ea-php56 /home/username/domain_path/path/to/cron/script

Ersetzen Sie im obigen Beispiel "ea-php56" durch die PHP-Version, die der Domain zugewiesen ist, die Sie verwenden möchten.

Hoffe das hilft jemandem.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.