【问题标题】:Laravel: Class 'GuzzleHttp\Client' not foundLaravel:找不到类“GuzzleHttp\Client”
【发布时间】:2015-09-22 11:48:36
【问题描述】:

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

MandrillTransport.php 第 114 行中的 FatalErrorException:类 '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,我也尝试过更新,但仍然出现相同的错误。

【问题讨论】:

  • 如何解决这个问题?

标签: php laravel composer-php mandrill


【解决方案1】:

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

composer require guzzlehttp/guzzle

它适用于 mailgun API。出于某种原因,laravel 邮件文档中的建议方法。您可以通过将以下行添加到您的 composer.json 文件中来将此软件包安装到您的项目中

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

不会让作曲家下载Guzzle 源代码。顺便说一句,我没有发现| 在确定版本时是什么意思。该命令只是下载 PSR 代码。

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

【讨论】:

    【解决方案2】:

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

    composer require guzzlehttp/guzzle
    

    然后再试一次。

    【讨论】:

      【解决方案3】:

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

      composer update
      

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

      php composer.phar update
      

      【讨论】:

      • 我已经尝试过了,但问题仍然存在。这是composer update 的输出:Loading composer repositories with package information Updating dependencies (including require-dev) Nothing to install or update Generating autoload files Generating optimized class loader
      • @Imran 看到您的更新后,看起来 Guzzle 已正确安装,但并未自动加载。你的作曲家自动加载器应该有一个 GuzzleHttp 条目(检查 vendor/composer/autoload_psr4.php 并让我知道是否有一行 GuzzleHttp )。我只熟悉作曲家,不熟悉 Laravel,但看起来你应该运行命令 php artisan dump-autoload 来重新生成 Laravel 的自动加载器。
      • 我曾尝试使用php artisan dump-load,但出现“未定义命令”错误。我也尝试过composer dump-autoload,它生成了自动加载文件,但在我原来的问题中仍然收到相同的 Class not found 错误。
      【解决方案4】:

      你试过了吗:

      artisan clear-compiled 
      

      或者如果 artisan 不可用,尝试删除已编译的.php(如果存在)(在供应商目录中)并启动 composer dumpautoload

      【讨论】:

      • 是的,我已经尝试过了,但我仍然收到错误消息。我的供应商目录中没有compiled.php文件,我已经运行composer dump-autoload
      • 也许你应该删除你的 composer.lock 和 vendor 文件夹,如果可能的话尝试重新安装。
      【解决方案5】:

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

      所以你可以添加 "guzzlehttp/guzzle": "~3" 到作品中

      【讨论】:

        【解决方案6】:

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

        "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 比它工作正常。

        【讨论】:

          【解决方案7】:

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

          我刚刚将这个验证码生成器添加到了 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"
              },
          

          如果有人知道这为什么会奏效,那我真的会心痒痒。

          【讨论】:

          • 可能是因为 mews/captcha 需要依赖。
          【解决方案8】:

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

          【讨论】:

            【解决方案9】:

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

            我已经尝试过 Laravel 4。它对我有用。

            【讨论】:

              猜你喜欢
              • 2019-08-29
              • 1970-01-01
              • 2020-04-22
              • 2018-04-02
              • 1970-01-01
              • 1970-01-01
              • 2017-11-29
              • 2016-05-09
              • 2019-04-27
              相关资源
              最近更新 更多