2015-07-05 4 views
13

Я пытаюсь использовать Mandrill отправлять электронную почту через мою рамку Laravel, однако я получаю следующее сообщение об ошибке:Laravel: класс «GuzzleHttp Client» не найден

FatalErrorException in MandrillTransport.php line 114: Class 'GuzzleHttp\Client' not found

я установил жрать с помощью следующей команды в терминале:

"guzzlehttp/guzzle": "~4.0" 

Согласно документации Laravel, я должен добавить "guzzlehttp/guzzle": "~4.0" в мой файл composer.json, но я не уверен, где я поместил это правильно, поскольку я до сих пор вижу эту ошибку.

{ 
    "name": "laravel/laravel", 
    "description": "The Laravel Framework.", 
    "keywords": ["framework", "laravel"], 
    "license": "MIT", 
    "type": "project", 
    "require": { 
     "laravel/framework": "5.0.*", 
     "illuminate/html": "^5.0", 
     "guzzlehttp/guzzle": "~4.0" 
    }, 
    "require-dev": { 
     "phpunit/phpunit": "~4.0", 
     "phpspec/phpspec": "~2.1" 
    }, 
    "autoload": { 
     "classmap": [ 
      "database" 
     ], 
     "psr-4": { 
      "App\\": "app/" 
     } 
    }, 
    "autoload-dev": { 
     "classmap": [ 
      "tests/TestCase.php" 
     ] 
    }, 
    "scripts": { 
     "post-install-cmd": [ 
      "php artisan clear-compiled", 
      "php artisan optimize" 
     ], 
     "post-update-cmd": [ 
      "php artisan clear-compiled", 
      "php artisan optimize" 
     ], 
     "post-create-project-cmd": [ 
      "php -r \"copy('.env.example', '.env');\"", 
      "php artisan key:generate" 
     ] 
    }, 
    "config": { 
     "preferred-install": "dist" 
    } 
} 

Вот список пакетов мое приложение, обратите внимание, что жрать имеет другую версию: 4.2.3, который я также пытался обновить до, но все еще получаю ту же ошибку. list of packages installed

+0

Как решить эту проблему? – Unbreakable

ответ

4

После обновления файла composer.json необходимо выполнить команду update разрешить и установить зависимости:

composer update 

или, если композитор не на своем пути:

php composer.phar update 
+0

Я пробовал это, но проблема все еще сохраняется. Вот выход из 'композитора update':' Загрузка композитор репозитории с информацией пакета зависимостей Обновления (в том числе требующего-разработчика) ничего, чтобы установить или обновить Создание автозагрузка файлов Создания оптимизировано класс loader' – Imran

+0

@Imran после просмотра его обновит похоже, что Guzzle установлен правильно, но он не загружается автоматически. У вашего автозагрузчика композитора должна быть запись для GuzzleHttp (проверьте «vendor/composer/autoload_psr4.php» и сообщите мне, есть ли строка для 'GuzzleHttp'). Я знаком с композитором, а не с Laravel, но похоже, что вы должны запустить команду 'php artisan dump-autoload' для восстановления автозагрузчика Laravel. – Paulpro

+0

Я пытался использовать 'php artisan dump-load', но получаю ошибку« Command not defined ». Я также попробовал 'composer dump-autoload', который сгенерировал файлы автозагрузки, но я все еще получаю ту же ошибку класса, которая не найдена в моем исходном вопросе. – Imran

2

Вы пытались:

artisan clear-compiled 

или если ремесленник не доступна попытка удалить compiled.php, если существует (в каталоге производителя) и запуск композитор dumpautoload

+0

Да, я пробовал это, но я все равно получаю сообщение об ошибке. В моем каталоге поставщика нет файла compiled.php, и я уже запускал 'composer dump-autoload' – Imran

+0

Возможно, вам стоит удалить папку composer.lock и поставщика и попытаться переустановить все, если это возможно. –

-1

Я замечал, почему это работает для меня, я видел это в форуме где-то

I просто добавил искаженный генератор для файла composer.json

"mews/captcha": "~2.0.", 

добавил его весь пакет требует

"require": { 
    "php": ">=5.5.9", 
    "laravel/framework": "5.1.*", 
    "laravelcollective/html": "5.1.*", 
    "laracasts/flash": "~1.3", 
    "mews/captcha": "~2.0.", 
    "guzzlehttp/guzzle": "~4.0" 
    }, 

Если сома кто-то знает, почему это сработало, это действительно поцарапает зуд в моем мозгу.

+0

Может быть, потому что mews/captcha требуют зависимости. – FooBar

0

Я получил эту ошибку, когда попытался запустить мой код за пределами рамки Laravel во время тестирования в автономном файле. Это работало для меня, когда я переместил его внутри контроллера.

7

Откройте свой терминал в корневом каталоге вашего проекта и введите

composer.phar require guzzlehttp/guzzle 

Он работал для mailgun API. По некоторым причинам, предложенным способом на почте документ в Laravel в

"guzzlehttp/guzzle": "~5.3|~6.0" 

не делает композитор скачать Guzzle исходники. Кстати, я не узнал, что означает | при определении версии. Эта команда просто загружает код PSR.

В этот момент решение может работать. Однако, имейте в виду проблемы совместимости. Поскольку команда установит последнюю стабильную версию, не подходящую.

1

У меня была та же проблема. Я использовал старую версию для работы. Это больше не работает, начиная с версии 4. Она работает на версии 3.8.1

Таким образом, вы можете добавить «guzzlehttp/жрать»: «~ 3» к работам

0

Вы можете решить эту проблему, чтобы добавить "mews/captcha": "1.0.1" и "guzzlehttp/guzzle": "~4.0" в ваш файл composer.json. И тогда вам нужно запустить команду composer update на вашем терминале.

Я пробовал Laravel 4. Это работает для меня.

1

Если вы используете Laravel при запуске в эту ошибку, просто запустите:

composer require guzzlehttp/guzzle 

И попробуйте еще раз.

Смежные вопросы