Laravel 5 - 供应商 - 未找到类

时间:2015-08-18 09:32:11

标签: php laravel-5 composer-php

我正在使用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"
    }
}

任何人对我所缺少的或我出错的地方都有任何想法?

6 个答案:

答案 0 :(得分:3)

我遇到了类似的问题。上传vendor / composer文件夹对我有用!

答案 1 :(得分:1)

面对这个问题,我首先要感谢riza让我走上正轨的道路。

根据documentation,在安装了服务提供者和外观之后,我们必须执行以下命令:

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

enter image description here

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

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

解决方案: 因此,要解决此错误,我们需要更改config/app.php文件中的调用:

  • providers部分。改变这个:

    Spatie\Analytics\AnalyticsServiceProvider::class,
    

    by:

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

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

    by:

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

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

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

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

答案 2 :(得分:0)

将psr-4更改为:

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

希望这对你有用。

答案 3 :(得分:0)

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

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

答案 4 :(得分:0)

"require: {
    "php": ">=5.5.9",
    "laravel/framework": "5.1.*",
    "illuminate/html": "5.*",
    "spatie/laravel-analytics": "^1.2"**
}

似乎你正在使用php 5. *,这就是为什么作曲家拉出具有不同类别的1.2版本的软件包。

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

您读取安装程序包的自述文件适用于2.4版本,适用于php 7.0

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

有关详细信息,请参阅我的博客:Class not found error due to php version mismatch

答案 5 :(得分:0)

创建自己的程序包时,我遇到了类似的问题。 PHP Storm正在查找类,但是当脚本启动时,状态为500。原因很简单-确保vendor中的软件包包含在composer.json

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

然后它将被±utoloaded。