用于记录的 CronTab 在 Laravel 中不起作用

CronTab for logging not working in Laravel

我正在测试一个简单的记录器命令以放入 crontab。当我 运行 php artisan schedule:run 命令时,我首先能够获得所需的输出。但是 运行 everyMinute() 的 crontab 不起作用。

我的 Crontab 条目是 * * * * * cd /Users/bikrambhandari/My Documents/Laravel Projects/Migration/artisan && php artisan schedule:run >> /dev/null2>&1

我的调度代码如下

protected function schedule(Schedule $schedule)
    {
        $schedule->command('visa:expire')
            ->everyMinute();
    }

现在命令 php artisan visa:expire 代码将在日志文件中写入一行。我在 mac。并且希望每分钟都写入日志文件。

假设您的计划代码没问题,我猜您的 cron 作业没有被正确调用,因为您正在 CD 到的目录路径中有空格。

更改您的 crontab 行:

 * * * * * cd "/Users/bikrambhandari/My Documents/Laravel Projects/Migration/artisan" && php artisan schedule:run >> "/Users/bikrambhandari/My Documents/crontab.log.txt" 2>>"/Users/bikrambhandari/My Documents/crontab-error.log.txt"

引号会让空格不作为参数定界符,所以 cd 应该成功,然后 php 开始。我将输出的重定向从 /dev/null 更改为文件 - 您可以在此处查看您的实际 schedule 函数是否有问题。一旦你知道一切正常,将重定向改回 /dev/null

编辑 -

再次更改重定向,以简化它并生成单独的日志文件。

我还会添加一行来仅触摸一个文件,这样您就知道 cron 确实是 运行 -

 * * * * * touch /tmp/cron_is_running