【问题标题】:Guzzle without composer没有作曲家的 Guzzle
【发布时间】:2015-07-24 15:02:42
【问题描述】:

我需要使用需要Guzzlesproutvideo php lib

Guzzle 需要安装 Composer,但不确定是否需要运行,因为我在某个文件中找到了

require 'vendor/autoload.php';

我从未使用过 composer,而且我在共享主机上,我无法安装它

我从 github 下载 Guzzle 但不确定我是否解决了 autoload.php 人员问题以及是否可以工作

【问题讨论】:

  • 您需要在自己的开发环境中构建项目并将工件(即包含所有供应商、composer autoload 和其他内容的完整文件夹)上传到共享主机。我强烈不建议您编写自己的自动加载器,因为(在最好的情况下)您最终会获得与 composer autoloader 相同的功能。
  • 做了但还是不行,不知道我是怎么联系到开发者的
  • “仍然无法正常工作” - 您遇到了什么错误?

标签: php composer-php guzzle


【解决方案1】:

您可以从此站点下载 Guzzle 的打包版本,而无需 Composer 创建依赖项。

https://php-download.com/package/guzzlehttp/guzzle

【讨论】:

  • php-download.com 网站已关闭。
  • 目前它试图让你注册然后付费 (proof)
【解决方案2】:

您不应该手动安装 Sproutvideo,因为这比您想象的要混乱得多。事实上,正如您所发现的,它根本无法让您使用 Composer 安装 Guzzle。

在使用共享主机时(甚至在使用具有 root 访问权限的专用服务器时),最好不要在该机器上调用 Composer 来安装依赖项。您应该有办法将常规网站的文件放在共享主机上,可能使用 FTP(警告:无密码加密!避免使用)、SFTP、SCP、FTPS、WebDAV 等。无论您使用什么来复制文件将本地计算机复制到共享主机,您应该使用它来复制 Composer 为您下载的文件。

这意味着您必须在该本地计算机上运行 Composer。您安装它并运行所需的命令来下载所需的包并创建自动加载。之后,您可以将文件上传到共享主机。

根据您的开发方式,上传然后摆弄共享主机上的文件是完全可能的,但我建议您准备一个本地开发环境。这样,当您在代码中输入错误并立即上传时,您就不会意外关闭您的实时网站。

为了使用 Composer 自动加载的类,您只需包含位于 vendor/autoload.php 的文件(如果您的 PHP 文件不在根目录中,您必须使用正确的路径,很可能在前面加上../ 一次或多次)。包含此文件后,您只需使用这些类。请注意,您必须为 Sproutvideo 库使用正确的命名空间。

还有一点:Sproutvideo 库目前没有发布版本,因此 Github 页面上的安装说明实际上是错误的,因为您无法解决发布版本。将此作为警告信号。此外,此库依赖于过时的 Guzzle 3.7 版。 3.x系列的最新版本是3.9.3,最晚也只会维护到2015年底。这是一个额外的警告标志。您可以联系 Sproutvideo 的维护者和 ask to release a versionupdate the dependency on Guzzle

【讨论】:

    【解决方案3】:

    我正在寻找一种不使用 Composer 安装 Guzzle 的方法(我将在生产服务器上进行设置,并且需要将新安装保持在最低限度)。 Guzzle 3.x 可以通过 PEAR 安装:

    https://guzzle3.readthedocs.org/getting-started/installation.html

    3.x 是一个旧版本,但我想它可以用于很多用途。

    如果您正在运行 RedHat 或 Centos,EPEL 存储库有一个名为“php-guzzle-Guzzle”的包,可以通过 yum 安装。如果你这样做,在你的 php 代码中包含 Guzzle 的方法如下:

    <?php
    require "Guzzle/autoload.php";
    

    【讨论】:

      【解决方案4】:

      为我工作!谢谢

      Download link: https://php-download.com/package/guzzlehttp/guzzle#all-versions
      ---------------------------------------------
      
      
      HomeDgtInform.controller.php
      ---------------------------------------------
      use GuzzleHttp\Client;
      use GuzzleHttp\Exception\RequestException;
      use GuzzleHttp\Psr7\Request;
      
      class HomeDgtInform extends DefaultController
      {
      
          public static function getRootPath() {
              return realpath(__DIR__ . "/../../");
          }
      
          public function getInfo()
          {
              set_include_path($this->getRootPath() . '/guzzlehttp_guzzle_7.0.0.0_beta1_require/');
              require_once($this->getRootPath() ."/guzzlehttp_guzzle_7.0.0.0_beta1_require/vendor/autoload.php"); 
      
              try {
                  $url      = 'https://cat-fact.herokuapp.com'; 
                  $http     = new Client;
                  $request  = new Request('GET', $url . '/facts/random?animal_type=cat&amount=2');
                  $response = $http->send($request, []);
      
                  $resp = json_decode((string) $response->getBody(), false);
              } catch (RequestException $e) {
                  $error = json_decode($e->getResponse()->getBody()->getContents());
              } catch (\Exception $e) {
              }
      
          }
      
      
      ---------------------------------------------
      
      .
      ├── controllers
      │   └── web
      │       └── HomeDgtInform.controller.php
      ├── guzzlehttp_guzzle_7.0.0.0_beta1_require
      │   ├── composer.json
      │   ├── composer.lock
      │   ├── index.php
      │   └── vendor
      │       ├── autoload.php
      
      

      【讨论】:

        猜你喜欢
        • 2014-10-28
        • 2012-11-11
        • 1970-01-01
        • 2016-02-29
        • 2017-06-23
        • 2020-06-13
        • 2018-10-04
        • 2013-02-05
        • 1970-01-01
        相关资源
        最近更新 更多