laravel的任务调度在服务器上无法正常工作

时间:2016-01-28 12:25:30

标签: php laravel cron

我可以使用putty cli在服务器上执行各个工匠命令。例如。

php artisan inspire

和其他与数据库相关的自定义命令,在使用putty时工作正常。另外我把它们放在kernel.php的日程表中,就像这样

protected function schedule(Schedule $schedule){
    $schedule->command('customcommand:execute')->everyMinute();
}

当我使用putty

运行此命令时
php artisan schedule:run

它也可以正常工作。 问题是我无法执行schedule:运行命令通过服务器cron job ..命令在服务器上看起来像这样

php -d register_argc_argv=On /path/to/artisan schedule:run >> /dev/null 2>&1 
有趣的是我能够通过服务器cron job执行单独的命令 即

php -d register_argc_argv=On /path/to/artisan customcommand:execute >> /dev/null 2>&1 

同样有效......

只有该计划命令无效。

它也没有显示任何错误..

如果我不添加'-d register_argc_argv = On',我得到异常'ErrorException',消息'为foreach提供了无效的参数()

这里服务器我的意思是cPanal,我在'cron jobs'

下添加了这个命令

4 个答案:

答案 0 :(得分:0)

我想你忘了把你的任务添加到crontab。 这个教程很棒,我想我会回答你的问题。 https://laracasts.com/lessons/recurring-tasks-the-laravel-way

答案 1 :(得分:0)

在php.ini上禁用了ini指令register_argc_argv,我需要在每次调用时明确启用它,以便接受argcargv参数。幸运的是,我使用exec代替command

轻松解决了这个问题
$schedule->exec('php -d register_argc_argv=On /path/to/artisan sms:bulk-send')

使用您的命令而不是sms:bulk-send然后它将起作用。

答案 2 :(得分:0)

* * * * * /usr/local/bin/ea-php71 /home/your_domain/artisan schedule:run >> /dev/null 2>&1

答案 3 :(得分:0)

首先,
which php
获取您现在使用的 php

然后更改您的 cron 作业命令,例如
* * * * * /path/to/your/php /path/to/your/project/artisan schedule:run
指定您正在使用的 php 和项目
例如* * * * * /usr/local/bin/php /home/user/project/artisan schedule:run

它对我有用