Laravel cron 没有自动运行

Laravel cron not working automatically

我正在 Laravel 通过 scotch box 做一个项目。我正在尝试通过 cronjobs 自动化一些事情。问题是我的 cron 不会自动 运行,但是当我 php artisan schedule:run 它 运行 完美地完成了我的任务。

app/commands/sendmail.php

namespace App\Console\Commands;
use Illuminate\Console\Command;
use Mail;

 class sendmail extends Command {
  protected $name = 'sendMail';
  protected $description = 'A mail has been send ';

public function fire()
{
    Mail::send([],[], function($message)  {
       //sendmail function that works...
    });    
    }
 }

app/console/Kernel.php

namespace App\Console;

use Illuminate\Console\Scheduling\Schedule;
use Illuminate\Foundation\Console\Kernel as ConsoleKernel;
use Illuminate\Support\Facades\DB;
use App\Battle;
use Carbon\Carbon;
use App\Console\Commands\Inspire;
use App\Commands\mails;
class Kernel extends ConsoleKernel
{

protected $commands = [
    \App\Console\Commands\Inspire::class,
    \App\Console\Commands\sendmail::class,
];

protected function schedule(Schedule $schedule)
{
    $schedule->command('inspire')
             ->everyMinute();

    $schedule->command('sendMail')
        ->everyMinute();
}
}

crontab -e

# m h  dom mon dow   command
* * * * * php var/www/artisan schedule:run

问题最终是相对路径与绝对路径的使用。

使用定义为var/www/artisan的相对路径将根据当前工作目录设置路径。这意味着 App/Console/var/www/artisan 没有找到 artisan。

而不是使用绝对路径,例如 /var/www/artisan 会将目录直接设置为 /var/www/artisan,这将是 artisan.

的正确位置

* * * * * php -d register_argc_argv=On /var/www/artisan schedule:run