Пытаюсь узнать, как реализовать задание cron с помощью php.
cron отформатирован так /etc/crontab
* 13 * * * /usr/bin/php /var/www/path/to/file/database-bkup-test.php &>/tmp/mycroncommand.log
Таким образом, это должно работать в 13 часов ежедневно (13:00).
Я просмотрел статус службы с
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 * * * * корень /scripts/test.php &> / tmp / mycrontest.log
На этот раз у меня есть журнал, в котором указано Permission Denied. Полагаю, это потому, что я никогда не применял / usr / bin / php
Это шаг вперед от исходной ошибки.
Благодаря Конн Уорвикер выше для помощи в решении проблемы:
Я пропустил пользователя корень из моей работы cron.
* 13 * * * root /usr/bin/php /var/www/path/to/file/database-bkup-test.php &>/tmp/mycroncommand.log