【问题标题】:Laravel 5 - Vendor - Class not foundLaravel 5 - 供应商 - 找不到类
【发布时间】:2015-08-18 09:32:11
【问题描述】:

我正在使用 laravel-analytics (https://github.com/spatie/laravel-analytics/) 并且已经在本地安装了所有东西,工作正常。

但是,每当我尝试上传到服务器时,访问页面时都会出现以下错误:Class 'LaravelAnalytics' not found 我正在尝试通过以下方式访问它:use \LaravelAnalytics as Analytics;

我在本地和服务器上都使用 linux 操作系统。我也跑过:composer update 现在得到:Nothing to install or update

我检查了 .json 文件,我可以看到我要安装的包在那里。

{
    "name": "laravel/laravel",
    "description": "The Laravel Framework.",
    "keywords": ["framework", "laravel"],
    "license": "MIT",
    "type": "project",
    "require": {
        "php": ">=5.5.9",
        "laravel/framework": "5.1.*",
        "illuminate/html": "5.*",
        "spatie/laravel-analytics": "^1.2"
    },
    "require-dev": {
        "fzaninotto/faker": "~1.4",
        "mockery/mockery": "0.9.*",
        "phpunit/phpunit": "~4.0",
        "phpspec/phpspec": "~2.1"
    },
    "autoload": {
        "classmap": [
            "database"
        ],
        "files":
        ["app/Http/helpers.php"],

        "psr-4": {
            "App\\": "app/"
        }
    },
    "autoload-dev": {
        "classmap": [
            "tests/TestCase.php"
        ]
    },
    "scripts": {
        "post-install-cmd": [
            "php artisan clear-compiled",
            "php artisan optimize"
        ],
        "pre-update-cmd": [
            "php artisan clear-compiled"
        ],
        "post-update-cmd": [
            "php artisan optimize"
        ],
        "post-root-package-install": [
            "php -r \"copy('.env.example', '.env');\""
        ],
        "post-create-project-cmd": [
            "php artisan key:generate"
        ]
    },
    "config": {
        "preferred-install": "dist"
    }
}

有人对我缺少什么或哪里出错有任何想法吗?

【问题讨论】:

  • 您是否已将 Spatie\LaravelAnalytics\LaravelAnalyticsServiceProvider 添加到您的提供商列表中?
  • @Tim - 是的,我已经添加了提供者和别名。
  • @Phorce 我也遇到了同样的问题,你找到解决办法了吗?
  • @riza - 你可以试试:php artisan dump-auto load 或 clear-compiled - 我认为这对我有用
  • @Phorce 其实我的问题是vendor包命名空间和文件夹命名不同,当然文件夹命名时找不到vendor类,现在可以了

标签: php laravel-5 composer-php


【解决方案1】:

我遇到了类似的问题。上传供应商/作曲家文件夹对我有用!

【讨论】:

  • 我认为这应该是评论。
  • 是的,我也这样做了
【解决方案2】:

我自己也遇到了这个问题,首先要感谢riza,是他让我走上了这条道路。

根据documentation,在安装了服务提供者和门面之后,我们必须执行这个命令:

php artisan vendor:publish --provider="Spatie\Analytics\AnalyticsServiceProvider"

导致以下错误:Class 'Spatie\Analytics\AnalyticsServiceProvider' not found

如果我们查看vendor/spatie/laravel-analytics/src,我们可以看到所需的类在其名称的开头包含 Laravel 字符串

解决方案: 所以要解决这个错误,我们需要更改从config/app.php文件发出的调用:

  • providers 部分。改变这个:

    Spatie\Analytics\AnalyticsServiceProvider::class,
    

    作者:

    Spatie\LaravelAnalytics\LaravelAnalyticsServiceProvider::class,
    
  • aliases 部分,更改此:

    'Analytics' => Spatie\Analytics\AnalyticsFacade::class,
    

    作者:

    'Analytics' => Spatie\LaravelAnalytics\LaravelAnalyticsFacade::class,
    

然后,再次运行以下命令,使其工作(也添加了 Laravel 字符串):

php artisan vendor:publish --provider="Spatie\LaravelAnalytics\LaravelAnalyticsServiceProvider"

然后转到config/ 文件夹。您应该会看到一个名为 laravel-analytics.php 的文件。

【讨论】:

    【解决方案3】:

    我在创建自己的包时遇到了类似的问题。 PHP Storm 正在寻找类,但是当脚本启动时,会显示状态 500。原因很简单 - 确保您来自 vendor 的包包含在它的 composer.json 中

    "autoload": {
            "classmap": [
                "src/"
            ]
        }
    

    然后会自动加载。

    【讨论】:

      【解决方案4】:

      把你的 psr-4 改成这样:

      "psr-4": {
          "App\\": "app/",
          "vendor\\spatie\\" : "spatie/"
      }
      

      希望这对你有用。

      【讨论】:

      • 我已经添加了这个,不起作用。我也跑了php composer update..有什么想法吗?
      • @Phorce 在我遇到验证码插件和 laravel 5.1 的这个问题之前,我搜索了很多,直到我在 composer.json 中将此路径添加到我的 psr-4:“vendor\\mews\\” :“mews/”,它对我有用。
      • @Phorce 是的,我做到了。添加该代码后运行composer require spatie/laravel-analytics。我希望这有用。
      【解决方案5】:

      您必须将类添加到别名(或使用 FQCN):

      // config/app.php
      'aliases' => [
          ...
          'LaravelAnalytics' => 'Spatie\LaravelAnalytics\LaravelAnalyticsFacade',
          ...
      ];
      

      【讨论】:

      • 我已经添加了,这不是问题,因为它可以在本地工作。
      【解决方案6】:
      "require: {
          "php": ">=5.5.9",
          "laravel/framework": "5.1.*",
          "illuminate/html": "5.*",
          "spatie/laravel-analytics": "^1.2"**
      }
      

      似乎您使用的是 php 5.*,这就是为什么 composer 拉取具有不同类的 1.2 版本的包的原因。

      一个月前我遇到了同样的问题

      您在安装包中阅读的自述文件适用于 php 7.0 的 2.4 版本

      只需将您的 php 5.* 更新为 php 7.* 或获取 1.2 版本软件包的自述文件以正确设置软件包

      详情见我的博客:Class not found error due to php version mismatch

      【讨论】:

      • 与其他答案相同,请编辑以说明该链接指向您的网站
      • 另外,请不要复制粘贴多个问题的相同答案。如果一个问题可以用您之前发布的完全相同的答案来回答,那么它是重复的,应该作为一个关闭;因此,回答它会干扰人们回答。
      猜你喜欢
      • 2016-10-28
      • 2016-08-08
      • 2015-07-04
      • 2016-01-08
      • 1970-01-01
      • 1970-01-01
      • 2019-02-18
      • 2018-10-03
      • 2015-07-17
      相关资源
      最近更新 更多