【问题标题】:Running Basic Laravel Task in Routes.php - "Sorry, can't find that task."在 Routes.php 中运行基本 Laravel 任务 - “抱歉,找不到该任务。”
【发布时间】:2012-12-04 18:19:27
【问题描述】:

我正在尝试设置一个 Laravel 任务,最终使用工匠界面将其称为 cron 作业。

在尝试让一个简单的任务工作时,我不断收到 Laravel 找不到该任务的错误:“抱歉,找不到该任务。”

这是我的版本有问题吗?我正在使用一个不到一个月前下载的版本,我知道它至少是 v3.0,但我不知道如何查看具体的版本号。

我需要在 start.php 中配置什么来注册我所有的“任务”吗?我认为这是默认为保存在 /application/tasks 中的所有类完成的

Mytask.php

class Mytask_Task {

    public function run($arguments) {
        // Do awesome notifying...
        echo "Hello from Mytask Task";
    }
}

Routes.php

try{
    \Laravel\CLI\Command::run(array('mytask'));
    echo "Success";
} catch (Exception $e) {
    echo $e->getMessage();
}

【问题讨论】:

    标签: php laravel


    【解决方案1】:

    原因是对于非 cli 请求,laravel 的应用程序工作流不会自动加载 CLI 组件。

    这就是为什么你必须这样做:

    require_once path('sys') . 'cli' . DS . 'dependencies' . EXT;
    Laravel\CLI\Command::run(array('migrate', 'application'));
    

    【讨论】:

    • 这不是问题,因为我在路由函数中进行测试,并且 CLI 组件实际上已加载,因为被调用的路由不是 CLI 请求...。请参阅下面的答案。
    • 谢谢!一直在寻找为什么标准命令在我的路线上不起作用!
    【解决方案2】:

    所以我追根溯源,结果发现这是一个非常令人沮丧的错误。

    在我使用的特定 v3.x 版本的 Laravel 中,任务无法通过其小写/不区分大小写的名称来识别。我在 Github 上被 this post 指出了正确的方向。

    所以我将Mytask.php 重命名为mytask.php,任务执行良好。

    如果有人知道如何检查我正在运行的 Laravel 版本以便其他人知道他们是否受到影响,请告诉我,我会更新这篇文章。

    【讨论】:

      猜你喜欢
      • 2017-07-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-03-22
      • 1970-01-01
      • 1970-01-01
      • 2022-08-04
      • 1970-01-01
      相关资源
      最近更新 更多