php-Laravel 5通过AWS EC2上的cron计划-命令未运行

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

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

背景
认(amazon AMI)EC2实例上,artisan命令已正确定义,并且可以通过以下方式从项目目录(即/ var / www / html / myproject /)完美运行:

PHP artisan mycommand:option1

我已将其添加到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');
}

通过sudo crontab -u apache -e为apache添加了以下cron命令:

* * * * * PHP /var/www/html/myproject/artisan schedule:run >> /dev/null 2>&1

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

>通过crontab -e的ec2-user
>通过sudo crontab -e进行root

系统输出

从sudo tail -f / var / log / cron:

Apr 11 19:17:01 ip-10-0-0-42 CROND[17968]: (root) CMD (PHP /var/www/html/myproject/artisan schedule:run >> /dev/null 2>&1)
Apr 11 19:17:01 ip-10-0-0-42 CROND[17969]: (ec2-user) CMD (PHP /var/www/html/myproject/artisan schedule:run >> /dev/null 2>&1)
Apr 11 19:17:01 ip-10-0-0-42 CROND[17970]: (apache) CMD (PHP /var/www/html/myproject/artisan schedule:run >> /dev/null 2>&1)
Apr 11 19:18:01 ip-10-0-0-42 CROND[17980]: (ec2-user) CMD (PHP /var/www/html/myproject/artisan schedule:run >> /dev/null 2>&1)
Apr 11 19:18:01 ip-10-0-0-42 CROND[17981]: (apache) CMD (PHP /var/www/html/myproject/artisan schedule:run >> /dev/null 2>&1)
Apr 11 19:18:01 ip-10-0-0-42 CROND[17982]: (root) CMD (PHP /var/www/html/myproject/artisan schedule:run >> /dev/null 2>&1)
Apr 11 19:19:01 ip-10-0-0-42 CROND[17992]: (root) CMD (PHP /var/www/html/myproject/artisan schedule:run >> /dev/null 2>&1)
Apr 11 19:19:01 ip-10-0-0-42 CROND[17993]: (ec2-user) CMD (PHP /var/www/html/myproject/artisan schedule:run >> /dev/null 2>&1)
Apr 11 19:19:01 ip-10-0-0-42 CROND[17994]: (apache) CMD (PHP /var/www/html/myproject/artisan schedule:run >> /dev/null 2>&1)

这些内容均未显示
须藤尾巴-f /var/www/html/myproject/storage/log/laravel.log
要么
sudo tail -f /var/www/html/myproject/storage/log/laravel-2017-04-11.log

附加信息

内核权限:

drwxr-sr-x 2 apache apache 4096 Feb 24 00:24 Commands
-rw-r--r-- 1 apache apache 1111 Feb 24 00:24 Kernel.PHP

资源检查:

> https://askubuntu.com/q/23009
> https://github.com/laravel/framework/issues/13462
> https://stackoverflow.com/a/30664353/3092596
> https://laracasts.com/discuss/channels/servers/how-to-perform-php-artisan-schedulerun-on-an-ubuntu-server-with-laravel-53-for-cron-jobs?page=1

其他资讯:

>由PHP artisan –version确定运行Laravel 5.4.16
>根据PHP -v确定运行PHP 7.1.3

解决方法:

问题与PHP在cron命令定义中缺少其(绝对)路径有关

cron命令应该是:

* * * * * /usr/local/bin/PHP /var/www/html/myproject/artisan schedule:run >> /dev/null 2>&1

您可以从终端中哪个PHP输出获取正确的PHP路径

笔记:
-Laravel Scheduler命令可以通过以下方式添加cron命令,从而对apache用户正常工作:

sudo crontab -u apache -e  

-Laravel仍然没有记录Log :: info(‘schedule:run’);像它应该的每一分钟一样……即使从根目录运行cron命令(即通过sudo crontab -e设置cron)
这可能与Laravel中的其他设置有关-因为即使通过PHP artisan schedule手动运行Scheduler,它也不会记录任何内容:从项目根目录运行

相关文章

laravel的dd函数不生效怎么办
看不懂laravel文档咋办
安装laravel框架出现command怎么办
Laravel开发API怎么使用事务
laravel怎么构建复杂查询条件
laravel如何实现防止被下载