Выполнение cronjob как www-данные

Мой сервер работает на Ubuntu и nginx. Моя проблема касается Крона, я хотел бы запустить его (crontab) использование файла - cron.txt, его содержание:

* * * * * /usr/bin/php /var/www/html/test.php >> /var/log/cron.log

Если я выполняю его с помощью команды: crontab /var/www/html/cron.txt, это работает отлично, сценарий test.php выполняется. Но когда я делаю то же, но использование Сценария PHP (выполняющийся через браузер): exec('crontab /var/www/html/cron.txt');, это не работает.

Проверка текущего cronjob командой: crontab -l -u www-data, строка из файла появляется, но Крон не делает своего задания. Возможно, это связано с некоторыми проблемами разрешения? Поскольку это только работает путем выполнения корнем. Существует ли способ вынудить Крон сделать задачи www-данных также?

3
задан 6 June 2017 в 22:17

2 ответа

Пожалуйста, используйте /etc/crontab. Этот метод выполнения заданий cron позволяет добавить имя пользователя к задаче. Это будет выглядеть так:

* * * * * www-data /usr/bin/php /var/www/html/test.php >> /var/log/cron.log

Вы можете сделать nano /etc/crontab и добавить строку в файл.

Но когда я делаю то же самое, но использую скрипт PHP (выполняющийся через браузер): exec ('crontab /var/www/html/cron.txt');, это не работает.

Если это не сработает, возможно, у вас есть другая проблема, кроме использования crontab. Например: вам не нужно перенаправить? (т.е. используйте > /dev/null 2>/dev/null & в конце вашей команды exec?).

3
ответ дан 1 December 2019 в 16:19

Мне удалось добиться того, чего я хотел, все в коде в моем первоначальном посте в порядке, единственное, что я должен был знать, это то, что пользователю www-данных не разрешено писать в /var/log, поэтому я имел нет выхода там. Кроме того, в моем PHP-скрипте я пытался создать файл и записать в него что-то, для этого требуется абсолютный путь, поэтому он должен выглядеть следующим образом:

dirname(__FILE__) . '/myfile.txt';

После этих изменений, все работает как положено.

0
ответ дан 1 December 2019 в 16:19

Другие вопросы по тегам:

Похожие вопросы: