Запустите файл 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

k102
источник
могу я спросить, как вы это делаете? Все равно 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

Эммануэль
источник
16

Это способ:

/usr/bin/php -q /home/username/public_html/yourfilename.php >/dev/null
Как и я
источник
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 / То же, что и выше

Саджад
источник
2

Предложено экспертами.

/usr/local/bin/php /home/username/public_html/path/to/cron/script
Али Акрам
источник
1

На самом деле это очень просто,

php -q /home/username/public_html/cron/cron.php
Душьянт Кандиа
источник
0

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

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

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

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

Анджана Сильва
источник