Laravel 4.2 Illuminate Facade 没有得到解决

Laravel 4.2 Illuminate Facade are not getting resolved

我创建了一个 artisan 命令来按照下面的步骤清除应用程序缓存 link

http://code.tutsplus.com/tutorials/your-one-stop-guide-to-laravel-commands--net-30349

我正尝试在我的仪表板控制器中调用它,如下所示

namespace ABC;

class DashboardController extends \BaseController {

    /**
     * Display a listing of the resource.
     *
     * @return Response
     */
    var $viewContent = [];

    public function index() {
        //Method one
        \Artisan::call('command:clearCache');

        //Method two
        $console=new \Illuminate\Console\Application;
        $console->call('command:clearCache');
        //Other function goes here

    }
 }

以上代码出现异常(以上代码中的方法一):

Call to undefined method Illuminate\Support\Facades\Artisan::call() Which means facades are not resolving to service providers.

对于方法二,我得到了以下异常

There are no commands defined in the "command" namespace.

我尝试使用 xdebug 调试 2 个不同的外观(其中一个(应用程序外观)已解决,而 Artisan 未正确解析)。

我对外观及其工作原理知之甚少,但它们来自 laravel 框架,因此帮助较少。

编辑 config/app.php

中提供程序数组的前两行
'providers' => array(
        'Illuminate\Foundation\Providers\ArtisanServiceProvider',

前三行别名 config/app.php

 'aliases' => array(
        'App' => 'Illuminate\Support\Facades\App',
        'Artisan' => 'Illuminate\Support\Facades\Artisan',

这样试试

\Artisan::call('clearCache');

您可以将任何参数作为第二个参数传递

Artisan::call('clearCache', array('--paramname' => 'value'));

感谢您的帮助。

我没有按照我想要的方式工作, 但我在这里添加了一个适合我的解决方案。 希望它对其他人有用

    global $app;
    $artisan = new \Illuminate\Foundation\Artisan($app);
    $artisan->call('command:clearCache');

我检查了所有外观,发现有几个外观 [Auth、Artisan] 没有正确解析。

希望对您有所帮助。

只是为了帮助可能遇到与我相同问题的任何人。我只是在调用 Artisan 时遇到了麻烦,但我得到了与 OP 相同的错误消息。

它最终是一个权限问题。重置存储权限和 Artisan 文件本身解决了这个问题。

我不知道权限如何或为何更改。