Laravel:找不到类'GuzzleHttp \ Client'

时间:2015-07-05 04:14:14

标签: php laravel composer-php mandrill

我正在尝试使用Mandrill通过我的Laravel框架发送电子邮件,但是我收到以下错误:

  

MandrillTransport.php第114行中的FatalErrorException:Class   'GuzzleHttp \ Client'未找到

我在终端中使用以下命令安装了Guzzle:

"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"
    }
}

这是我的应用程序所拥有的软件包列表,请注意guzzle有不同的版本:4.2.3我也尝试更新但仍然得到相同的错误。 list of packages installed

9 个答案:

答案 0 :(得分:16)

在项目的根目录中打开终端并输入

composer.phar require guzzlehttp/guzzle

适用于mailgun API。出于某种原因,在laravel的邮件文档

中建议的方法
"guzzlehttp/guzzle": "~5.3|~6.0"

不会让作曲家下载Guzzle源代码。顺便说一句,我没有找到|在确定版本时的含义。此命令只下载PSR代码。

此时此解决方案可能有效。 ,请注意兼容性问题。因为该命令会安装最新的稳定版本,而不是合适的版本

答案 1 :(得分:9)

如果您在遇到此错误时使用 Laravel ,请运行:

composer require guzzlehttp/guzzle

再试一次。

答案 2 :(得分:6)

更新composer.json文件后,您需要运行update命令来解析和安装依赖项:

composer update

或者,如果作曲家不在您的路径中:

php composer.phar update

答案 3 :(得分:2)

你有没有尝试过:

artisan clear-compiled 

或者如果没有工匠,请尝试删除compiled.php(如果存在)(在供应商目录中)并启动composer dumpautoload

答案 4 :(得分:1)

我有同样的问题。 我使用旧版本才能工作。 它从版本4开始不再起作用了。 它适用于版本3.8.1

所以你可以添加“guzzlehttp / guzzle”:“〜3”来作品

答案 5 :(得分:0)

当我在一个独立文件中测试时,我尝试在Laravel框架之外运行我的代码时出现此错误。当我把它移到控制器内时,它对我有用。

答案 6 :(得分:0)

您可以解决此问题,将"mews/captcha": "1.0.1""guzzlehttp/guzzle": "~4.0"添加到composer.json文件中。然后您需要在终端上运行composer update命令。

我试过Laravel 4.它对我有用。

答案 7 :(得分:0)

在我的情况下,

简单"guzzlehttp/guzzle": "^6.3"中添加composer.json 需要如下所述的对象

"require": {
        "php": ">=7.0.0",
        "ext-gd": "*",
        "barryvdh/laravel-cors": "^0.11.2",
        "barryvdh/laravel-dompdf": "^0.8.1",
        "dingo/api": "2.0.0-alpha1",
        "doctrine/dbal": "^2.6",
        "fideloper/proxy": "~3.3",
        "guzzlehttp/guzzle": "^6.3",
        "intervention/image": "^2.4",
        "laravel/framework": "5.5.*",
        "laravel/tinker": "~1.0",
        "league/flysystem-aws-s3-v3": "~1.0",
        "predis/predis": "^1.1",
        "tymon/jwt-auth": "dev-develop"
    }, 

比使用终端在项目根目录中运行composer update的效果还好。

答案 8 :(得分:-1)

我不知道为什么这对我有用,我在某个论坛上看到了这个

我刚将此验证码生成器添加到composer.json文件

git pull --rebase

将其添加到所有需求包

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

如果有人知道为什么会这样,那真的会刮伤我脑中的痒。