我创建了一个laravel任务并添加到我的crontab文件
应用/控制台/ 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文件
* * * * * /usr/local/bin/php artisan schedule:run
* * * * * php artisan schedule:run
由于某些原因,我的crontab没有触发。
5分钟后,我在public/tasks/
文件夹中看不到任何内容。
我甚至尝试将完整路径放到我的php
。
我错过了什么吗?
如何进行调试?
我现在正在接受任何建议。
任何提示/建议/帮助都将非常感谢!
答案 0 :(得分:1)
在crontab中,您需要设置指向项目根目录中的artisan文件的路径。
* * * * * php /path/to/project/artisan schedule:run
如果您在查找项目路径的绝对路径时遇到问题,请将终端cd
打开到项目的路径目录中,然后使用pwd
命令,给你绝对目录。
例如:
$ cd MyUser/dev/project
$ pwd
将输出类似
的内容 /Users/MyUser/dev/project
然后你的cronjob看起来像
* * * * * php /Users/MyUser/dev/project/artisan schedule:run
还尝试重新启动cron守护程序。我发现,当事情不适合我时,有时会有帮助。