вкладка cron не работает php - PullRequest
0 голосов
/ 04 ноября 2011

Я добавил cronjob, введя эту команду - crontab -e.В этот файл я добавил следующие задачи:

*/5 * * * * /var/www/web/vendors/shells/aggregated_deals.php
*/5 * * * * /var/www/web/vendors/shells/deals.php

Это php-скрипты.после этого я перезапустил сервер apache, но эти сценарии не выполняются.И файл журнала системного журнала пуст.пожалуйста, помогите мне запустить этот cron.

Ответы [ 8 ]

2 голосов
/ 04 ноября 2011

Я не думаю, что он запустится сам по себе - вам нужно запускать сценарии с использованием интерпретатора PHP, например:

/usr/bin/php /var/www/web/vendors/shells/aggregated_deals.php

Обратите внимание, что ваша установка может иметь php в другом месте - используйте команду which php в командной строке, чтобы узнать местоположение.

1 голос
/ 04 ноября 2011

Я не думаю, что вы можете выполнить PHP-файл, называя его так, я всегда использую curl:

*/5 * * * * curl http://domain.com/page

Или, я думаю, вы можете запустить его с помощью самой команды php, еслиВы не хотите использовать веб-сервер:

*/5 * * * * php /var/www/web/vendors/shells/aggregated_deals.php

Все, что вы введете после звездочек в правиле crontab, будет командой, выполняемой для системы.Если вы запустите команду «/var/www/web/vendors/shells/aggregated_deals.php» в терминале, я уверен, что ничего не произойдет ... вам нужно вызвать ее как скрипт PHP.

0 голосов
/ 27 марта 2014

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

В любом случае, я бы предложил добавить путь к php в строке cron:

*/5 * * * * /usr/bin/php -f /var/www/web/vendors/shells/aggregated_deals.php > /tmp/my.log 2>&1
*/5 * * * * /usr/bin/php -f /var/www/web/vendors/shells/deals.php > /tmp/my.log 2>&1

Снова убедитесь, что разрешения хорошие

0 голосов
/ 08 марта 2013

Вы должны указать серверу выполнять файлы с PHP. Выполните все шаги, как описано в ответе Эльнурса, и поместите их в cron:

*/5 * * * * php -f /var/www/web/vendors/shells/aggregated_deals.php > /tmp/my.log 2>&1
*/5 * * * * php -f /var/www/web/vendors/shells/deals.php > /tmp/my.log 2>&1

$ chmod +x /var/www/web/vendors/shells/aggregated_deals.php
$ chmod +x /var/www/web/vendors/shells/deals.php
0 голосов
/ 04 ноября 2011

Вы должны запустить его в стиле торта ... вы должны запустить

cake shellName shellParam

в вашем случае это будет

cake aggregated_deals > /tmp/my.log
cake deals > /tmp/my.log 2>&1

этот торт находится в вашей папке тортовдолжен запускаться из папки вашего приложения ... я не уверен, как это сделать с помощью cron, но вы ошибаетесь ...

Это означает, что эти сценарии являются допустимыми cakeShells

0 голосов
/ 04 ноября 2011

Вы должны указать серверу выполнять файлы с PHP. Выполните все шаги, как описано в ответе Эльнурса, и поместите их в cron:

*/5 * * * * php -f /var/www/web/vendors/shells/aggregated_deals.php > /tmp/my.log 2>&1
*/5 * * * * php -f /var/www/web/vendors/shells/deals.php > /tmp/my.log 2>&1

Если это не сработает, вам может понадобиться указать полный путь к PHP. Я также только что добавил несколько строк, чтобы скрипт записывал любой вывод.

0 голосов
/ 04 ноября 2011

Во-первых, вам нужно убедиться, что у вас есть PHP CLI.Вы можете сделать это, запустив это:

$ php -v

Если вы видите какой-то вменяемый вывод, тогда доступен PHP CLI.В противном случае вам нужно будет установить его.Установка зависит от используемого вами дистрибутива.

Во-вторых, если вы хотите запускать сценарии CLI напрямую, вам нужно сделать их исполняемыми:

$ chmod +x /var/www/web/vendors/shells/aggregated_deals.php
$ chmod +x /var/www/web/vendors/shells/deals.php

В-третьих, сценарии PHP CLI не являютсясвязан с apache, и вам не нужно перезапускать его, чтобы скрипты CLI работали.

0 голосов
/ 04 ноября 2011

Почему бы вам не позвонить в php-cli с нужным пользователем?

*/5 * * * * www-data php /var/www/web/vendors/shells/aggregated_deals.php

OR

*/5 * * * * root /usr/bin/php /var/www/web/vendors/shells/aggregated_deals.php

Или что-то в этом роде. Вы уже установили php-cli?

...