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

17

На нашем сервере centos6. Я хотел бы выполнить php-скрипт в задании 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), но также не работает

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

    
задан Khalilos 12.03.2014 в 17:48
источник

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 * * * * означает, когда задача должна произойти. Первая цифра представляет минуты - в этом случае на каждую «десяти» минуту. Другие цифры представляют соответственно hour , day , month и день недели .

* - это подстановочный знак, означающий «каждый раз» .

Начните с поиска двоичного кода 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!

    
ответ дан Ilia Rostovtsev 12.03.2014 в 18:11
источник
2

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

00 * * * * root /usr/bin/php /var/virtual/hostname.nz/public_html/cronjob.php
    
ответ дан Philip 25.05.2015 в 01:49
источник
0

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

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

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

    
ответ дан Russell E Glaue 11.09.2015 в 18:08
источник

Ознакомьтесь с другими вопросами по меткам