Выполнить скрипт PHP в работе cron

18

На нашем сервере centos6. Я хотел бы выполнить php script в задании cron как пользователь apache, но, к сожалению, он не работает.

вот издание crontab (crontab -uapache -e)

24 17 * * * php /opt/test.php

и вот исходный код файла test.php, который отлично работает с пользователем "apache" как владелец.

<?php exec( 'touch /opt/test/test.txt');?>

Я пытаюсь заменить php полным путем php (/usr/local/php/bin/php), но также не работает

Спасибо заранее, Пожалуйста, помогите мне

  • 0
    Конечно, просто иметь "php" будет достаточно? По моему опыту использования CentOS, это может быть БОЛЬШОЙ кошмар, когда PHP правильно настроен со всей безопасностью и всем, что с этим связано.
Теги:
centos
cron

3 ответа

39
Лучший ответ

Автоматизированные задачи: Cron

Cron - это служба планирования по времени в операционных системах Linux/Unix. Задача Cron используется для планирования команд, которые будут выполняться периодически. Вы можете настроить команды или скрипты, которые будут повторяться в заданное время. Cron - один из самых полезных инструментов в Linux или UNIX, таких как операционные системы. Служба cron (daemon) работает в фоновом режиме и постоянно проверяет файлы /etc/crontab,/etc/cron./*. Он также проверяет каталог /var/spool/cron/.

Настройка задач Cron

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

*/10 * * * * /usr/bin/php /opt/test.php

В приведенном выше примере */10 * * * * означает, когда задача должна произойти. Первая цифра представляет минуты - в этом случае, каждую минуту. Другие цифры представляют, соответственно, час, день, месяц и день недели.

* является подстановочным знаком, означающим "каждый раз".

Начните с поиска своего двоичного кода PHP, введя в командной строке:

whereis php

Результат должен выглядеть примерно так:

php:/usr/bin/php/etc/php.ini/etc/php.d/usr/lib64/php/usr/include/php/usr/share/php/usr/share/man/man1/php.1.gz

Укажите правильный путь в вашей команде.

Введите следующую команду для ввода cronjob:

crontab -e

Чтобы узнать, что вы получили в crontab.

EDIT 1:

Чтобы выйти из редактора vim без сохранения, просто нажмите:

Shift+:

И затем введите q!

  • 0
    Спасибо за ваш ответ, я сделал это, но я хотел бы выполнить скрипт в apache crontab (crontab -uapache -e), который пока не работает. на самом деле скрипт отлично работает в корне crontab (когда я добавляю его в crontab -e)
  • 0
    @Khalilos Это должен быть crontab -u apache -e , ты это имел ввиду?
Показать ещё 3 комментария
3

У меня была такая же проблема... Мне пришлось запускать ее как пользователь.

00 * * * * root /usr/bin/php /var/virtual/hostname.nz/public_html/cronjob.php
0

Вам может потребоваться запустить задание cron как пользователь с разрешениями на выполнение PHP script. Попробуйте выполнить задание cron с правами root, используя команду runuser (man runuser). Или создайте систему crontable и запустите PHP скрипт как авторизованный пользователь, как описано в @Philip.

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

Как написать cron, который будет запускать script каждый день в полночь?

Ещё вопросы

Сообщество Overcoder
Наверх
Меню