没有作曲家的狂欢

Guzzle without composer

我需要使用sproutvideo php lib that requires Guzzle

Guzzle 需要安装 composer 并且不确定是否需要 运行,因为在某些文件中我发现

require 'vendor/autoload.php';

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

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

您不应该选择手动安装 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 version and to update the dependency on Guzzle.

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

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

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

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

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

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

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

为我工作!谢谢

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