2015-08-18 5 views
2

Я использую laravel-analytics (https://github.com/spatie/laravel-analytics/) и установил все локально, отлично работает.Laravel 5 - Vendor - Class not found

Всякий раз, когда я пытаюсь загрузить на сервер, однако, я получаю следующее сообщение об ошибке, посетив страницу: 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" 
    } 
} 

Кто-нибудь есть какие-либо идеи, что я отсутствует или где я неправильно?

+0

есть вы добавили Spatie \ LaravelAnalytics \ LaravelAnalyticsServiceProvider в список поставщиков? – Tim

+0

@Tim - Да, я добавил и провайдеров, и алисасы. – Phorce

+0

@Phorce Я столкнулся с той же проблемой, нашел ли вы решение? – riza

ответ

0

Изменение PSR-4 к этому:

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

надежду, что эта работа для вас.

+0

. Я применил это, не работает. Я также запустил обновление php composer. Любые идеи? – Phorce

+0

@Phorce, прежде чем у меня возникла проблема с плагином captcha и laravel 5.1, я много искал, пока не добавил этот путь к моему psr-4 в composer.json: «vendor \\ mews \\»: «mews /» и это работа для меня. – Andrew

+0

Вы запустили обновление для композитора? – Phorce

0

Вы должны добавить класс псевдонимов (или использовать FQCN):

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

Я добавил, что это не проблема, потому что она работает локально. – Phorce

2

Я сталкивался с подобной проблемой. Загрузка папки поставщика/композитора работала для меня!

+0

Это должен быть комментарий, я думаю. – ketan

+0

Yup, который сделал это для меня тоже –

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 string в начале их имен.

Решение: Итак, чтобы решить эту ошибку, необходимо изменить вызов, сделанный из файла 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.

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

+2

То же, что и в другом ответе, пожалуйста, отредактируйте, чтобы сказать, что ссылка ведет на ваш сайт. –

+1

Кроме того, пожалуйста, не копируйте и не вставляйте тот же ответ на несколько вопросов. Если вопрос отвечает с тем же самым ответом, который вы опубликовали ранее, он дублируется и должен быть закрыт как один; ответ на это мешает получать ответы от людей из-за этого. – ArtOfCode