Запустите файл PHP в задании cron с помощью CPanel


102

Я просто пытаюсь запустить PHP-скрипт, используя задание cron в CPanel - это правильный синтаксис:

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

Я не получаю никаких уведомлений по электронной почте о том, что cron был завершен, нужно ли мне что-то делать с файлом PHP?


25
Я думаю, что это очень актуально, поскольку многие проекты размещаются на Cpanel, и нужно знать, как запускать задания cron, если это необходимо
Уильям

8
Если cPanel не разрешен при сбое сервера или переполнении стека, где должны быть вопросы по этому поводу?
Сера

9
довольно иронично, что этот вопрос был классифицирован как «не по теме» для StackOverflow, но это самый активный вопрос, который у меня когда-либо был здесь ..... Я надеюсь, что это помогло другим :)
Zabs

Спасибо @Tatu Ulmanen У меня работает!
Tushar Rmesh Saindane

Ответы:


66

В системе crontab:

  • /usr/bin/phpэто PHP двоичный путь ( по- разному в некоторых системах например: FREEBSD /usr/local/bin/php, Linux: /usr/bin/php)
  • /home/username/public_html/cron/cron.php должен быть ваш путь к скрипту php
  • /dev/null должен быть вывод cron, например: /home/username/stdoutx.txt

Таким образом, вы можете контролировать свой cron, просматривая вывод cron /home/username/stdoutx.txt


1
Я использую это сейчас, и это работает, но я не получаю никаких уведомлений по электронной почте. Почему бы и нет? php /home/username/public_html/cron/cron.php примечание, мне пришлось поместить следующую строку в верхней части PHP-скрипта #! / usr / bin / php -q
Забс

Если вы хотите, чтобы cronjob отправлял электронные письма для вас, вы должны использовать php mail (), я не думаю, что cronjob имеет автоматическую почтовую систему, если только вы не используете сценарии оболочки или php.
Somy A 08

1
Когда я нажимаю на вкладку «cronjobs» в cPanel, на странице появляются два поля - одно для команды, которую вы хотите выполнить, а другое для адреса электронной почты, на который вы хотите отправлять выходные данные. Это в cPanel 11.
user3640967

2
Что будет полной командой? Я имею в виду полную команду в одной строке со всеми параметрами.
Auj 05

@SomyA, пожалуйста, подскажите команду для запуска файла сценария Java.
Нарендер Редди

104

Я использовал эту команду, чтобы активировать для этого задание cron.

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

на сервере godaddy, и он работает нормально.


2
Что значит -q?
Бхавик Шах

4
@BhavikShah Согласно php.net/manual/en/features.commandline.options.php , -qпредназначен для тихого режима, подавляет вывод заголовка HTTP
Уильям,

@William Спасибо. Понял.
Бхавик Шах

29

>/dev/null останавливает cron от отправки писем.

на самом деле, на мой взгляд, лучше сделать phpсам скрипт, который заботится о его регистрации, а не просто выводит что-то в cron


могу я спросить, как вы это делаете? Все равно cronTabs ни на что не выводит? Я тоже >/dev/null 2>&1в финале ...
ThomasK 06

@ThomasK, если ты сделаешь такую ​​задачу, /path/to/file.php > /dev/nullон будет молчать.
k102 07

19

Это самый простой способ:

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

И если вы хотите записать вывод скрипта в файл, добавьте это в конец команды:

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



11

Эта строка cron работала для меня на hostgator VPS с использованием cpanel.

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

10

У меня были проблемы с использованием / usr / bin / php на CPanel, поскольку он скомпилирован как двоичный файл «cgi-fcgi», а не «cli». Попробуйте использовать / usr / local / bin / php или, поскольку он в любом случае стоит первым на пути, просто используйте вместо него 'php':

php /path/to/script.php

Если вы хотите запустить скрипт как исполняемый файл, дайте ему + x perms и используйте следующую строку в качестве первой строки скрипта:

#!/usr/bin/env php

6

Я надеюсь, что ваша проблема связана с двоичным файлом path и php. Если вы исправили путь в соответствии с более ранними ответами, используйте php-cli вместо команды php при выполнении задания cron.

Возможно php_sapi_name(), не возвращается cli. Он возвращает что-то еще, например, cgi-fcgiи т. Д.

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

Надеюсь, это поможет.


3

Это отлично работает, а также отправляет электронное письмо:

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

Следующие две команды также работают нормально, но не отправляют электронную почту:

/ usr / bin / php -f / home / То же, что и выше

php -f / home / То же, что и выше




0

Для конкретного домена Multi PHP Cron Job сделайте следующее:

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

В приведенном выше примере замените «ea-php56» на версию PHP, назначенную домену, который вы хотите использовать.

Надеюсь, это кому-то поможет.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.