【问题标题】:Custom Laravel Artisan command not available through cron job无法通过 cron 作业使用自定义 Laravel Artisan 命令
【发布时间】:2014-01-26 02:54:15
【问题描述】:

当我通过 SSH 连接时,我有自定义的 Artisan 命令在本地以及我的生产服务器上运行,但对任何 cron 作业都不可用。我什至尝试以运行 cron 作业的用户身份运行它,并且在我的控制台上运行良好。

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

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

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

【问题讨论】:

    标签: php laravel laravel-4 cron


    【解决方案1】:

    至少对我来说有效:

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

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

    【讨论】:

      【解决方案2】:

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

      */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
      

      【讨论】:

      • 就是这个!当我找到它时,我以为我已经在这里发布了我的答案,但我一定忘记了。实际上在服务器上指定 php 的完整路径,然后文件的完整路径使其工作。
      • 我有 Godaddy 托管,这个答案也解决了我的问题。我正在为 conjob 开发 laravel 4 并被他的命令解决。请问路径中需要/local/关键字是什么?
      • 使用which php找到你的PHP二进制文件的安装位置,然后在那个位置引用它。
      • 这个问题的逻辑答案是什么?看起来 php 命令的目标是同一个地方。为什么这工作如此疯狂!?这也解决了我的问题 - 但我很好奇为什么会这样?
      【解决方案3】:

      请务必将命令添加到 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
      

      【讨论】:

      • 该命令已设置并从命令行正常工作。只有在通过 cron 作业访问时它才不起作用。
      【解决方案4】:

      您可能需要确保 artisan 从正确的目录运行

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

      【讨论】:

      • 它正在从正确的目录运行 artisan,运行 php artisan 确实列出了所有命令,但我的自定义命令不可用。实际的 cron 运行 php /path/to/myproject/artisan subjects:calculate
      猜你喜欢
      • 2013-06-08
      • 2021-08-11
      • 2020-05-31
      • 2023-02-08
      • 1970-01-01
      • 1970-01-01
      • 2016-07-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多