相关疑难解决方法(0)

Laravel 5 通过 AWS EC2 上的 cron 进行调度 - 命令未运行

问题:
我有一个 Laravel 5.4 artisan 任务,我需要通过 cron 运行它 - 尽管命令和调度程序(显然)设置正确,但它并没有完成。

这是 Laravel、php、apache、linux 或 crontab 的问题吗?最好的诊断方法是什么?


背景
在默认(亚马逊 AMI)EC2 实例上,artisan 命令被正确定义,并/var/www/html/myproject/在通过以下方式调用时从项目目录(即)完美运行:

php artisan mycommand:option1
Run Code Online (Sandbox Code Playgroud)

我已将此添加到如下所示的时间表中app/Console/Kernel.php

protected function schedule(Schedule $schedule)
{
    Log::info('schedule:run');
    $schedule   ->command('mycommand:option1')
                        ->dailyAt('07:00')
                        ->emailOutputTo('email@email.com');

    $schedule   ->command('mycommand:option2')
                        ->dailyAt('07:15')
                        ->emailOutputTo('email@email.com');
}
Run Code Online (Sandbox Code Playgroud)

apachevia添加了以下 cron 命令sudo crontab -u apache -e

* * * * * php /var/www/html/myproject/artisan schedule:run >> /dev/null 2>&1
Run Code Online (Sandbox Code Playgroud)

为了确保这不是权限问题,我还为以下用户添加了相同的命令:

  • ec2-user 通过 crontab -e
  • root 通过 sudo crontab -e

系统输出

来自sudo tail -f …

php cron laravel laravel-5 laravel-scheduler

5
推荐指数
1
解决办法
4293
查看次数

使用调度程序时,Laravel 5"类不存在"

我试图第一次使用调度程序来调用方法:

protected function schedule(Schedule $schedule)
    {   
        $schedule->call('MyClassName@myMethodName')
            ->everyMinute();
    }
Run Code Online (Sandbox Code Playgroud)

我正在调用的类是以App/Http/Controller这种方式定义的:

namespace App\Http\Controllers;

use App\Http\Requests;
use App\Models\Reaction;
use View;
use Request;

class MyClassNameController extends Controller {
Run Code Online (Sandbox Code Playgroud)

但是每次调度程序运行时,它都会:

  [ReflectionException]
  Class MyClassName does not exist
Run Code Online (Sandbox Code Playgroud)

我怎么能解决这个问题?

cron dependency-injection laravel-5

2
推荐指数
1
解决办法
2738
查看次数