我正在尝试使用Mandrill通过我的Laravel框架发送电子邮件,但是我收到以下错误:
FatalErrorException in MandrillTransport.php line 114: Class
'GuzzleHttp\Client' not found
我已经在终端中使用以下命令安装了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我也曾尝试将其更新到,但仍然遇到相同的错误。
如何解决这个问题?
在项目的根目录下打开终端,然后输入
composer require guzzlehttp/guzzle
它适用于mailgun API。由于某种原因,laravel的邮件文档中建议使用此方法。您可以通过将以下行添加到您的composer.json文件中,将该软件包安装到您的项目中
"guzzlehttp/guzzle":"~5.3|~6.0"
不会使作曲家下载Guzzle源代码。顺便说一句,我没有发现|在确定版本时意味着什么。此命令仅下载PSR代码。
此时,解决方案可能会起作用。但是,请注意兼容性问题。因为该命令将安装最新的稳定版本,而不是合适的版本。
非常感谢,它为我工作。
如果遇到此错误时正在使用Laravel,请运行:
composer require guzzlehttp/guzzle
然后再试一次。
更新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的条目(签入vendorcomposerautoload_psr4.php并让我知道GuzzleHttp是否有一行)。我只是熟悉作曲家,而不是Laravel,但您似乎应该运行命令php artisan dump-autoload重新生成Laravels自动加载器。
我尝试使用php artisan dump-load,但收到命令未定义的错误。我也尝试过composer dump-autoload生成自动加载文件,但在我的原始问题中仍收到相同的Class not found错误。
你试过了吗 :
artisan clear-compiled
或如果artisan不可用,请尝试删除compile.php(如果存在)(在供应商目录中)并启动composer dumpautoload
是的,我已经尝试过了,但是仍然收到错误消息。我的供应商目录中没有Compiled.php文件,我已经运行composer dump-autoload
也许您应该删除composer.lock和vendor文件夹,如果可能,请尝试重新安装所有文件夹。
就我而言,很简单,在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更好。
我遇到过同样的问题。
我使用了旧版本才能正常工作。
从版本4开始,它不再起作用。
它适用于版本3.8.1
因此,您可以添加" guzzlehttp / guzzle":"?3"
您可以解决此问题,以将"mews/captcha":"1.0.1"和"guzzlehttp/guzzle":"~4.0"添加到您的composer.json文件。然后,您需要在终端上运行composer update命令。
我已经尝试过Laravel4。它对我有用。
当我在独立文件中进行测试时,尝试在Laravel框架之外运行代码时遇到此错误。当我将其移动到控制器中时,它对我有用。
我忘了为什么这对我有用,我在某个地方的论坛上看到了
我刚刚将此验证码生成器添加到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"
},
如果有人知道为什么这样有效,那确实会伤脑筋。
可能是因为喵/验证码需要依赖项。