Php 使用Crontab配置Laravel任务调度

Php 使用Crontab配置Laravel任务调度,php,laravel,laravel-5,cron,laravel-artisan,Php,Laravel,Laravel 5,Cron,Laravel Artisan,我已经创建了一个laravel任务并添加到我的crontab文件中 app/Console/Kernel.php <?php namespace App\Console; use Carbon; use Illuminate\Console\Scheduling\Schedule; use Illuminate\Foundation\Console\Kernel as ConsoleKernel; class Kernel extends ConsoleKernel {

我已经创建了一个laravel任务并添加到我的crontab文件中


app/Console/Kernel.php

<?php

namespace App\Console;

use Carbon;

use Illuminate\Console\Scheduling\Schedule;
use Illuminate\Foundation\Console\Kernel as ConsoleKernel;

class Kernel extends ConsoleKernel
{
    /**
     * The Artisan commands provided by your application.
     *
     * @var array
     */
    protected $commands = [
        \App\Console\Commands\Inspire::class,
    ];

    /**
     * Define the application's command schedule.
     *
     * @param  \Illuminate\Console\Scheduling\Schedule  $schedule
     * @return void
     */
    protected function schedule(Schedule $schedule)
    {
        $now = Carbon\Carbon::now('America/New_York');
        $dt = Carbon\Carbon::parse($now);
        $time_start = $dt->toTimeString();
        $dt = str_replace('-','_',$dt);
        $dt = str_replace(' ','_',$dt);
        $dt = str_replace('/',':',$dt);
        $schedule->exec('curl '.env('APP_URL').'fbwifi/acl_update')->everyMinute()
            ->sendOutputTo(public_path().'/tasks/log_'.$dt.'.txt');
    }
}

结果 由于某些原因,我的crontab不会触发

5分钟后,我在我的
public/tasks/
文件夹中看不到生成的任何内容

我甚至试着把我的
php
的完整路径放进去


我遗漏了什么吗?如何进行调试?

在crontab中,您需要设置指向项目根目录中artisan文件的路径

***php/path/to/project/artisan计划:运行

如果您在查找项目路由的绝对路径时遇到困难,请打开terminal,
cd
进入项目的路由目录,然后使用
pwd
命令,该命令将为您提供绝对目录

例如:

$ cd MyUser/dev/project
$ pwd
将输出如下内容

/Users/MyUser/dev/project

那你的工作看起来像

***php/Users/MyUser/dev/project/artisan计划:运行


还可以尝试重新启动cron守护进程。我发现,有时当我无法运行时,这会有所帮助。

在crontab中,必须使用artisan的完整路径命令
php/path/to/your/project/artisan时间表:运行
php如何?不需要?我想
/usr/local/bin/
已经在您的
路径中了,所以不需要确定。我很难找到我完整的工匠之路。
$ cd MyUser/dev/project
$ pwd