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?


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


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


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


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


16

To jest sposób:

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

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

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

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.


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


2

Sugerowane przez ekspertów.

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


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.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.