【问题标题】:Laravel Passport Install Class Not Found未找到 Laravel Passport 安装类
【发布时间】:2017-11-30 22:20:44
【问题描述】:

我正在尝试将我的 Laravel 应用程序配置为使用 Passport,但在我的 AppServiceProvider.php 中加载类时遇到了困难。这是我所做的......

<?php // AuthServiceProvider.php

namespace S1\Providers;

use Laravel\Passport\PassportServiceProvider;
use Illuminate\Support\Facades\Gate;
use Illuminate\Foundation\Support\Providers\AuthServiceProvider as 
ServiceProvider;

class AuthServiceProvider extends ServiceProvider
{
...
    public function boot()
    {
        $this->registerPolicies();
        Passport::routes();
        Passport::tokensCan([
            'client' => 'this is a api client test'
        ]);
    }
}

.

<?php .  // auth.php
 ...
return [

    'guards' => [
        'web' => [
             'driver' => 'passport',
            'provider' => 'users',
        ],
], ...

.

<?php // app.php

'providers' => [
...
Laravel\Passport\PassportServiceProvider::class,
....

.

<?php  // AppServiceProvider.php

namespace S1\Providers;

use Illuminate\Support\ServiceProvider;
use S1\Providers\AppServiceProvider;
use Laravel\Passport\PassportServiceProvider;

class AppServiceProvider extends ServiceProvider
{

    public function register()
    {
        // Enable Laravel Migrations Generator for development only
        if ($this->app->environment() !== 'production') {
            $this->app->register(\Way\Generators\GeneratorsServiceProvider::class);
            $this->app->register(\Xethron\MigrationsGenerator\MigrationsGeneratorServiceProvider::class);
        }
    }
}

这样做的结果是出现以下错误:

  [Symfony\Component\Debug\Exception\FatalThrowableError]  
  Class 'S1\Providers\Passport' not found   

我确实有这个工作,但不得不重新构建,现在我无法克服这个错误。我的命名空间出了点问题,但我不知道是什么。

【问题讨论】:

  • 把这个写在你导入的顶部'use Laravel\Passport\Passport;'

标签: php laravel-5 laravel-passport


【解决方案1】:

在您的AuthServiceProvider.php 中,更改:

use Laravel\Passport\PassportServiceProvider;

到:

use Laravel\Passport\Passport;

【讨论】:

    【解决方案2】:

    好像忘记导入护照了,试试添加这个

    use App\Passport\Passport;
    

    到您的 AppServiceProvider

    <?php  // AppServiceProvider.php
    
    namespace S1\Providers;
    
    use App\Passport\Passport;
    
    use Illuminate\Support\ServiceProvider;
    use S1\Providers\AppServiceProvider;
    use Laravel\Passport\PassportServiceProvider;
    
    class AppServiceProvider extends ServiceProvider
    {
    
        public function register()
        {
            // Enable Laravel Migrations Generator for development only
            if ($this->app->environment() !== 'production') {
                $this->app->register(\Way\Generators\GeneratorsServiceProvider::class);
                $this->app->register(\Xethron\MigrationsGenerator\MigrationsGeneratorServiceProvider::class);
            }
        }
    }
    

    【讨论】:

      【解决方案3】:

      请检查您的 composer.json,laravel/passport 是否将其包含在“require”中,如下所示:

      "require": {
              "php": ">=5.6.4",
              "laravel/framework": "5.4.*",
              "laravel/passport": "^3.0",
              "laravel/tinker": "~1.0"
       },
      

      如果不重新运行

      作曲家需要 laravel/passport

      【讨论】:

        【解决方案4】:

        为您的特定Laravel 版本安装正确的Passport 版本。假设你有 Laravel 5.5,安装 Passport 4.0:

        composer require laravel/passport=~4.0

        检查你的 Laravel 版本:

        php artisan --version

        或者查看composer.json中require对象下的"laravel/framework": "5.5.*",

        【讨论】:

          【解决方案5】:
          <?php
          
          namespace App\Providers;
          
          use Laravel\Passport\Passport;
          
          use Illuminate\Support\Facades\Gate;
          use Laravel\Passport\PassportServiceProvider;
          use Illuminate\Foundation\Support\Providers\AuthServiceProvider as ServiceProvider;
          
          class AuthServiceProvider extends ServiceProvider
          {
              /**
               * The policy mappings for the application.
               *
               * @var array
               */
              protected $policies = [
                  'App\Model' => 'App\Policies\ModelPolicy',
              ];
          
              /**
               * Register any authentication / authorization services.
               *
               * @return void
               */
              public function boot()
              {
                  $this->registerPolicies();
          
                  Passport::routes();
          
                  //
              }
          }
          

          【讨论】:

          • 在我添加 { use Laravel\Passport\Passport; 大约两个小时后我浪费了它。 } 关于 authservice 提供者,问题已解决 laravel 官方文档已错过。
          • 考虑formatting您的代码并添加解释。
          • 只导入使用 Laravel\Passport\Passport;不见了
          猜你喜欢
          • 2020-06-20
          • 1970-01-01
          • 2016-09-02
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2019-04-12
          • 2023-03-23
          • 1970-01-01
          相关资源
          最近更新 更多