【问题标题】:Laravel & Mailgun: Guzzle not found in productionLaravel 和 Mailgun:在生产中找不到 Guzzle
【发布时间】:2018-09-04 19:07:14
【问题描述】:

我决定将 Mailgun 用于我最新的 Laravel 项目,因为它似乎有很好的开箱即用集成。

我按照 Laravel 指南 (http://laravel.com/docs/mail#configuration) 设置 Mailgun,一切都在本地运行。在 Vagrant 中运行本地服务器时,我可以发送电子邮件,但是当我尝试从我的 DigitalOcean 服务器发送电子邮件时,我会收到以下错误:

file: "/home/forge/MYPROJECTSITE.com/vendor/laravel/framework/src/Illuminate/Mail/Transport/MailgunTransport.php"
line: 121
message: "Class 'GuzzleHttp\Client' not found"
type: "Symfony\Component\Debug\Exception\FatalErrorException"

我已尝试重新安装 Guzzle,并且对所有设置进行了三次检查。奇怪的是,当它从 Vagrant 运行时我会收到电子邮件,但从 DigitalOcean 服务器运行时却没有。

有没有人看到这个或知道什么设置可能导致这个?

感谢您的宝贵时间。

【问题讨论】:

  • 您是否在 DigitalOcean 液滴上运行 Composer 安装或更新以导入 Guzzle 供应商包?
  • 我正在使用 Laravel Forge 并且 composer install 在部署脚本中。然而,我通过 SSH 连接到服务器,当我运行 composer install 时,我收到以下信息:“警告:锁定文件不是最新的,因为 composer.json 中的最新更改。你可能会得到过时的依赖项。运行更新以更新它们。”当我运行composer update 时,我收到:“PHP 致命错误:未捕获的异常 'ErrorException' 带有消息 'proc_open(): fork failed - Cannot allocate memory' in phar:///usr/local/bin/composer/vendor/symfony /console/Symfony/Component/Console/Application.php:981

标签: laravel digital-ocean mailgun guzzle


【解决方案1】:

我在一个新的 ubuntu 机器上发生了这种情况.. 我一生都无法找出原因,因为 Guzzle 在另一个地方工作.. 我只是将邮件更改为 SMTP 并使用 mailgun 的登录名/密码并且有效。

【讨论】:

  • 感谢菲尔。我做了同样的事情(添加了我的 mailgun 帐户的用户名和密码)并且它有效。
【解决方案2】:

解决办法:

.gitignore 中删除composer.lock 行并推送。在composer install 之后,您的服务器将使用锁定文件下载所需的依赖项。

【讨论】:

  • 我几乎在凌晨 3 点为此崩溃。感谢您的提示!
【解决方案3】:
sudo dd if=/dev/zero of=/swapfile bs=1024 count=512k

mkswap /swapfile

swapon /swapfile

【讨论】:

  • 可能应该添加一些细节,说明这些命令的作用以及它们可能起作用的原因
猜你喜欢
  • 1970-01-01
  • 2015-07-16
  • 2020-01-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-05-25
  • 1970-01-01
  • 2017-01-06
相关资源
最近更新 更多