【问题标题】:Class 'GuzzleHttp\Client' not found on Laravel production shared server在 Laravel 生产共享服务器上找不到类“GuzzleHttp\Client”
【发布时间】:2019-04-27 16:37:07
【问题描述】:

我正在尝试使用 Guzzle 从 API 检索数据。我按照 Guzzle 网站中的步骤,使用 Composer 安装它,在控制器中添加路由和代码。

我尝试了这两个选项:

$client = new Client([
    // Base URI is used with relative requests
    'base_uri' => 'https://jsonplaceholder.typicode.com/',
    // You can set any number of default request options.
    'timeout' => 2.0,
]);

还有……

$client = new \GuzzleHttp\Client([
    // Base URI is used with relative requests
    'base_uri' => 'https://jsonplaceholder.typicode.com/',
    // You can set any number of default request options.
    'timeout' => 2.0,
]);

运行时出现错误...

找不到类“GuzzleHttp\Client”。

我试过了:

require( dirname( __FILE__ ) . '/../../../vendor/autoload.php');

use GuzzleHttp\Client;

在 composer.json 中:

"require": {
    "guzzlehttp/guzzle": "^6.3",
  ...
},

还有……

composer update
composer dump-autoload
php artisan config:clear

项目在共享主机上;我注意到 /vendor 文件夹中没有 Guzzle 文件夹,所以我通过 FTP 上传。但还是同样的错误。

我已经尝试了我在论坛上找到的关于该主题的所有内容;我的想法不多了,请提供任何建议。 提前感谢您的宝贵帮助。

【问题讨论】:

  • Composer 安装没有帮助,对吧?你能做一个新的 laravel 应用程序并尝试在那里安装它。如果这可行,您当前的回购中有问题。我只是尝试在我的 ubuntu 机器上这样做,use GuzzleHttp\Client; $c = new Client; 工作正常。供应商中的文件夹也应该命名为“guzzlehttp”——假设这是一个错字。最后,你的锁文件的状态是什么?
  • 尝试composer require guzzlehttp/guzzle 而不是手动将其添加到文件中。它应该向您展示所有过程。
  • 感谢您的回复,一开始我尝试了 composer require guzzlehttp/guzzle 但“guzzlehttp”文件夹未添加到共享主机中,因此必须使用 FTP 来完成。您提到的锁定文件是composer.lock?谢谢
  • 我在本地服务器上完成了这个过程,它可以工作,问题出在共享主机上。我已经在共享主机上部署了一个 laravel 应用程序。我设法通过 SSH 连接服务器,但我害怕安装 composer 并导致应用程序损坏,我应该如何继续?

标签: laravel api composer-php guzzle laravel-artisan


【解决方案1】:

如果您无法在共享主机上运行composer,您还应该上传/vendor/composer 目录(在本地$ composer require guzzlehttp/guzzle 之后)。

【讨论】:

  • 如果您无法在主机上运行 Composer,您应该上传 全部vendor
  • @ceejayoz 是的,你是对的,但@AugustoM 明确表示/vendor 内没有 Guzzle 文件夹
猜你喜欢
  • 2016-05-09
  • 2015-09-22
  • 2019-08-29
  • 1970-01-01
  • 2020-04-22
  • 2018-04-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多