Пытаюсь узнать, как реализовать задание cron с помощью php.
cron имеет такой формат / etc / crontab
* 13 * * * /usr/bin/php /var/www/path/to/file/database-bkup-test.php &>/tmp/mycroncommand.log
Таким образом, это должно выполняться ежедневно в 13 часов (13 часов)
Я просмотрел статус службы с
sudo systemctl status crond.service -l
Обнаружена следующая ошибка:
(/ usr / bin / php) ОШИБКА (ошибка getpwnam ())
У меня это настроено при использовании PHP сценарий выглядит так:
$today = date('Y-m-d');
$user = 'db_user';
$password = 'db_password';
$host = '127.0.0.1'; //this is actually replaced with an address to another remote server
$port='3306';
$database='database_name';
exec('mysqldump --user='.$user.' --password='.$password.' --host='.$host.' --port='.$port.' '.$database.' > /db-bkup/db-'.$today.'.sql');
конечным результатом будет дамп базы данных в файл:
db-2017-03-24. sql
Может ли кто-нибудь мне помочь?
Я потратил время на чтение и попытки реализовать это. Я нашел этот пост очень полезным
Поскольку задание не выполняется, все это даже не создает журнал в / tmp
.
Обновление
Добавлено простое cron для вывода "Hello World";
* / 2 * * * * root /scripts/test.php &> / tmp / mycrontest.log
На этот раз у меня есть журнал, созданный с отказом в разрешении. Я предполагаю, что это потому, что я никогда не применял / usr / bin / php
Это шаг вперед от исходной ошибки.
Благодаря Conn Warwicker выше за помощь в решении проблемы:
я пропустил пользователя root из моей работы с cron.
* 13 * * * root /usr/bin/php /var/www/path/to/file/database-bkup-test.php &>/tmp/mycroncommand.log