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?

Zabs
quelle
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

Somy A.
quelle
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
104

Ich habe diesen Befehl verwendet, um den Cron-Job dafür zu aktivieren.

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

auf Godaddy Server, und es funktioniert gut.

Pank
quelle
2
Wofür -qsteht?
Bhavik Shah
4
@BhavikShah Nach php.net/manual/en/features.commandline.options.php , -qist für Quiet - Modus unterdrückt HTTP - Header - Ausgang
William
@ William Danke. Verstanden.
Bhavik Shah
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

k102
quelle
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

Emmanuel
quelle
16

Das ist der Weg:

/usr/bin/php -q /home/username/public_html/yourfilename.php >/dev/null
Da ich
quelle
11

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

/usr/bin/php -q /home/username/public_html/scriptname.php
Mike Volmar
quelle
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
BenKennish
quelle
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.

Lakin Mohapatra
quelle
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

Sajjad
quelle
2

Vorgeschlagen von Experten.

/usr/local/bin/php /home/username/public_html/path/to/cron/script
Ali Akram
quelle
1

Es ist eigentlich sehr einfach,

php -q /home/username/public_html/cron/cron.php
Dushyanth Kandiah
quelle
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.

Anjana Silva
quelle