自定义Laravel Artisan命令无法通过cron作业获得

时间:2014-01-08 06:20:01

标签: php laravel laravel-4 cron

我有自定义的Artisan命令,当我在SSH上时在本地和我的生产服务器上运行,但是对任何cron作业都不可用。我甚至尝试以cron作业运行的用户身份运行它,它在我的控制台上工作正常。

当我在上述设置中运行php artisan时,我的自定义命令已列出并可用。但是,当我将php artisan作为cron作业运行时,它们不会列出。

此外,尝试将自定义命令php artisan subjects:calculate作为cron作业运行会导致以下错误:

[InvalidArgumentException]
There are no commands defined in the "subjects" namespace.

4 个答案:

答案 0 :(得分:12)

我正在与同样的错误战斗,我找到了解决方案。 首次尝试失败

*/5 * * * * /usr/bin/php /home/mysite/public_html/artisan my:command

*/5 * * * * php /home/mysite/public_html/artisan my:command

解决方案

*/5 * * * * /usr/local/bin/php /home/mysite/public_html/artisan my:command

答案 1 :(得分:1)

请务必将命令添加到app / start / artisan.php文件中:

Artisan::add(new SubjectsCommand);

或者如果您正在使用IOC容器:

Artisan:resolve('SubjectsCommand');

然后从应用程序的文件夹中运行CronJob:

00 09-18 * * 1-5 php /path/to/yourapp/artisan subjects:calculate

00 09-18 * * 1-5 /usr/bin/php /path/to/yourapp/artisan subjects:calculate

答案 2 :(得分:1)

至少对我有用:

class Kernel extends ConsoleKernel
{
    protected $commands = [
        // Commands\YourCommand::class,
    ];
}

刚刚将我的命令添加到命令内核列表中。

答案 3 :(得分:0)

您可能需要确保工匠从正确的目录中运行

cd /path/to/yourproject && php artisan subjects:calculate