带有 Laravel 命令的 Crontab 不工作

Crontab with Laravel commands not working

说明

我在 cron 上 运行 宁 php /var/www/html/artisan schedule:run 但它不工作。

我已将以下步骤添加到我的 Dockerfile:

FROM php:7.4.1-apache
...
RUN apt-get update && apt-get install -y cron
...
COPY ./.docker/cronjobs /etc/
RUN touch /var/www/html/schedule-run.log
RUN crontab /etc/cronjobs

然后,cron 是添加到 .gitlab-ci.yml 的 CI 步骤之一。

./.docker/cronjobs 文件如下:

* * * * * date >> /var/www/html/schedule-run.log
* * * * * php /var/www/html/artisan schedule:run >> /var/www/html/schedule-run.log

第一行一切正常,我可以在 /var/www/html/schedule-run.log.

看到 date 命令的输出

问题

问题出在 ./.docker/cronjobs 的第二行,它告诉 cron 每分钟 运行 宁 schedule:run

我已经 运行 php /var/www/html/artisan schedule:run >> /var/www/html/schedule-run.log 目录到容器的 bash 然后我说它的输出在 /var/www/html/schedule-run.log.

换句话说,命令没问题,但是当 cron 想要 运行 它时,它不会是 运行。


环境

Docker-compose: 1.25.4, build 8d51620a
Docker: 19.03.6
Machine: Ubuntu 18.0.4 LTS

经验

我检查了以下问题,但问题没有解决。

奇怪的是,它已经通过以下cron(在我的例子中是./.docker/cronjobs)文件解决了:

# the commented sections have not worked.
#* * * * * php /var/www/html/artisan schedule:run >> /var/www/html/schedule-run.log
#* * * * * /usr/local/bin/php /var/www/html/artisan schedule:run >> /var/www/html/schedule-run.log
#* * * * * cd /var/www/html/ && /usr/local/bin/php artisan schedule:run >> /var/www/html/schedule-run.log

* * * * * cd /var/www/html/ && /usr/local/bin/php artisan schedule:run

我假设是日志访问触发了问题。