Uruchom plik PHP w zadaniu cron przy użyciu CPanel

102

Po prostu próbuję uruchomić skrypt PHP za pomocą zadania cron w CPanel - czy to jest poprawna składnia:

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

Nie otrzymuję żadnych powiadomień e-mail z informacją, że cron został ukończony. Czy muszę zrobić coś konkretnego z plikiem PHP?

Zabs
źródło
25
Myślę, że jest to dość istotne, ponieważ wiele projektów jest hostowanych na Cpanel i trzeba by wiedzieć, jak uruchomić zadania crona, jeśli zajdzie taka potrzeba
William
8
Jeśli cPanel nie jest dozwolony w przypadku błędu serwera lub przepełnienia stosu, gdzie powinny być pytania na ten temat?
siarka
9
dość ironiczne, że to pytanie zostało sklasyfikowane jako „nie na temat” dla StackOverflow, ale jest najbardziej aktywnym pytaniem, jakie kiedykolwiek miałem tutaj… Mam nadzieję, że pomogło innym :)
Zabs
Dzięki @Tatu Ulmanen To działa dla mnie!
Tushar Rmesh Saindane

Odpowiedzi:

66

W systemie crontab:

  • /usr/bin/phpjest ścieżka php binarne (różne w niektórych systemach ex: freebsd /usr/local/bin/php, Linux: /usr/bin/php)
  • /home/username/public_html/cron/cron.php powinna być ścieżką do skryptu php
  • /dev/null powinno być wyjściem cron, np: /home/username/stdoutx.txt

Możesz więc monitorować swój cron, przeglądając dane wyjściowe crona /home/username/stdoutx.txt

Somy A
źródło
1
Używam tego teraz i działa, ale nie otrzymuję żadnych powiadomień e-mail, żadnych pomysłów, dlaczego nie? php /home/username/public_html/cron/cron.php uwaga Musiałem umieścić następujący wiersz na górze skryptu PHP #! / usr / bin / php -q
Zabs
Jeśli chcesz, aby cronjob wysyłał e-maile do ciebie, musisz używać php mail (), nie sądzę, że cronjob ma automatyczny system pocztowy, chyba że używasz skryptów powłoki lub php.
Somy A
1
Kiedy klikam zakładkę „cronjobs” w cPanel, na stronie są dwa pola - jedno na polecenie, które chcesz wykonać, a drugie na adres e-mail, na który chcesz wysłać dane wyjściowe. To jest w cPanel 11.
user3640967
2
Jakie będzie pełne polecenie? Mam na myśli pełne polecenie w jednej linii ze wszystkimi opcjami.
Auj,
@SomyA, czy mógłbyś mi powiedzieć polecenie uruchomienia pliku skryptu java.
Narender Reddy
104

Użyłem tego polecenia, aby aktywować w tym celu zadanie cron.

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

na serwerze GoDaddy i działa dobrze.

Pank
źródło
2
Co to -qznaczy?
Bhavik Shah
4
@BhavikShah Według php.net/manual/en/features.commandline.options.php , -qdotyczy trybu cichego , blokuje wyjście nagłówka HTTP
William
@William Thanks. Rozumiem.
Bhavik Shah
29

>/dev/null zatrzymuje wysyłanie wiadomości przez crona.

właściwie uważam, że lepiej jest zrobić phpskrypt tak, aby dbał o rejestrowanie, a nie tylko wyprowadzać coś do crona

k102
źródło
czy mogę zapytać, jak ty to robisz? Czy cronTabs i tak nie wyświetla czegoś? Ja też robię >/dev/null 2>&1na końcu ...
ThomasK
@ThomasK, jeśli wykonasz takie zadanie /path/to/file.php > /dev/null, będzie milczeć.
k102,
19

To najłatwiejszy sposób:

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

A jeśli chcesz zarejestrować wyjście skryptu do pliku, dodaj to na końcu polecenia:

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

Emmanuel
źródło
16

To jest sposób:

/usr/bin/php -q /home/username/public_html/yourfilename.php >/dev/null
Asi
źródło
11

Ta linia crona działała dla mnie na hostgatorze VPS przy użyciu cpanel.

/usr/bin/php -q /home/username/public_html/scriptname.php
Mike Volmar
źródło
10

Miałem problemy z używaniem / usr / bin / php na CPanel, ponieważ jest on skompilowany jako binarny "cgi-fcgi", a nie "cli". Spróbuj użyć / usr / local / bin / php lub, ponieważ i tak jest pierwszy w ścieżce, po prostu użyj zamiast tego `` php '':

php /path/to/script.php

Jeśli chcesz uruchomić skrypt jako plik wykonywalny, nadaj mu + x perms i użyj następującego jako pierwszego wiersza skryptu:

#!/usr/bin/env php
BenKennish
źródło
6

Mam nadzieję, że problem dotyczy również plików binarnych path i php. Jeśli naprawiłeś ścieżkę zgodnie ze starszymi odpowiedziami, użyj php-cli zamiast polecenia php podczas uruchamiania zadania cron.

Możliwe, że php_sapi_name()nie wraca cli. Zwraca coś innego cgi-fcgiitp.

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

Mam nadzieję, że to pomoże.

Lakin Mohapatra
źródło
3

Działa to dobrze, a także wysyła e-mail:

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

Poniższe dwa polecenia również działają dobrze, ale nie wysyłają wiadomości e-mail:

/ usr / bin / php -f / home / Tak samo jak powyżej

php -f / home / Tak samo jak powyżej

Sajjad
źródło
2

Sugerowane przez ekspertów.

/usr/local/bin/php /home/username/public_html/path/to/cron/script
Ali Akram
źródło
1

W rzeczywistości jest to bardzo proste,

php -q /home/username/public_html/cron/cron.php
Dushyanth Kandiah
źródło
0

W przypadku zadania Multi PHP Cron dla określonej domeny wykonaj następujące czynności:

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

W powyższym przykładzie zamień „ea-php56” na wersję PHP przypisaną do domeny, której chcesz używać.

Mam nadzieję, że to komuś pomoże.

Anjana Silva
źródło