Composer autoloader not loading GuzzleHttp\ClientInterface

心已入冬 提交于 2019-12-23 07:49:52

问题


I'm trying to use Guzzle, but I'm getting the following fatal error:

Fatal error: Class 'GuzzleHttp\ClientInterface' not found in /var/www/myapp/vendor/guzzlehttp/guzzle/src/functions.php on line 13

I'm autoloading with composer autoloader:

require 'vendor/autoload.php';

use Guzzle\Http\Client;

$client = new Client();

$requests = Array(
    $client->createRequest('GET', 'ams1.myapp.com:8080/api/ffmpeg_make_snapshots.php'),
    $client->createRequest('GET', 'ams2.myapp.com:8080/api/ffmpeg_make_snapshots.php'),
    $client->createRequest('GET', 'ams3.myapp.com:8080/api/ffmpeg_make_snapshots.php')
);

$client->sendAll($requests);

What is happening?

EDIT

My composer.json:

{
    "require": {
        "guzzlehttp/guzzle": "~4"
    }
}

EDIT 2

My composer.lock


{
    "_readme": [
        "This file locks the dependencies of your project to a known state",
        "Read more about it at http://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file"
    ],
    "hash": "33c003b6e3e2dc0144146f9b652a6719",
    "packages": [
        {
            "name": "guzzlehttp/guzzle",
            "version": "4.0.0",
            "source": {
                "type": "git",
                "url": "https://github.com/guzzle/guzzle.git",
                "reference": "4063f08ca434efac12bf7a3db0d370b1c451345b"
            },
            "dist": {
                "type": "zip",
                "url": "https://api.github.com/repos/guzzle/guzzle/zipball/4063f08ca434efac12bf7a3db0d370b1c451345b",
                "reference": "4063f08ca434efac12bf7a3db0d370b1c451345b",
                "shasum": ""
            },
            "require": {
                "guzzlehttp/streams": "1.*",
                "php": ">=5.4.0"
            },
            "require-dev": {
                "ext-curl": "*",
                "phpunit/phpunit": "4.*",
                "psr/log": "~1"
            },
            "type": "library",
            "extra": {
                "branch-alias": {
                    "dev-master": "4.0.x-dev"
                }
            },
            "autoload": {
                "psr-4": {
                    "GuzzleHttp\\": "src/"
                },
                "files": [
                    "src/functions.php"
                ]
            },
            "notification-url": "https://packagist.org/downloads/",
            "license": [
                "MIT"
            ],
            "authors": [
                {
                    "name": "Michael Dowling",
                    "email": "mtdowling@gmail.com",
                    "homepage": "https://github.com/mtdowling"
                }
            ],
            "description": "Guzzle is a PHP HTTP client library and framework for building RESTful web service clients",
            "homepage": "http://guzzlephp.org/",
            "keywords": [
                "client",
                "curl",
                "framework",
                "http",
                "http client",
                "rest",
                "web service"
            ],
            "time": "2014-03-29 23:11:36"
        },
        {
            "name": "guzzlehttp/streams",
            "version": "1.4.0",
            "source": {
                "type": "git",
                "url": "https://github.com/guzzle/streams.git",
                "reference": "3b761a328e5ed6ed519e960aded95d7acbe77894"
            },
            "dist": {
                "type": "zip",
                "url": "https://api.github.com/repos/guzzle/streams/zipball/3b761a328e5ed6ed519e960aded95d7acbe77894",
                "reference": "3b761a328e5ed6ed519e960aded95d7acbe77894",
                "shasum": ""
            },
            "require": {
                "php": ">=5.4.0"
            },
            "require-dev": {
                "phpunit/phpunit": "~4.0"
            },
            "type": "library",
            "extra": {
                "branch-alias": {
                    "dev-master": "1.4.x-dev"
                }
            },
            "autoload": {
                "psr-4": {
                    "GuzzleHttp\\Stream\\": "src/"
                },
                "files": [
                    "src/functions.php"
                ]
            },
            "notification-url": "https://packagist.org/downloads/",
            "license": [
                "MIT"
            ],
            "authors": [
                {
                    "name": "Michael Dowling",
                    "email": "mtdowling@gmail.com",
                    "homepage": "https://github.com/mtdowling"
                }
            ],
            "description": "Provides a simple abstraction over streams of data (Guzzle 4+)",
            "homepage": "http://guzzlephp.org/",
            "keywords": [
                "Guzzle",
                "stream"
            ],
            "time": "2014-07-19 18:43:42"
        }
    ],
    "packages-dev": [],
    "aliases": [],
    "minimum-stability": "stable",
    "stability-flags": [],
    "platform": [],
    "platform-dev": []
}

EDIT 3

composer config -l output:


[repositories.packagist.type] composer
[repositories.packagist.url] https?://packagist.org
[repositories.packagist.allow_ssl_downgrade] true
[process-timeout] 300
[use-include-path] false
[preferred-install] auto
[notify-on-install] true
[github-protocols] [git, https]
[vendor-dir] vendor
[bin-dir] {$vendor-dir}/bin (vendor/bin)
[cache-dir] C:/Users/User/AppData/Local/Composer
[cache-files-dir] {$cache-dir}/files (C:/Users/User/AppData/Local/Composer/files)
[cache-repo-dir] {$cache-dir}/repo (C:/Users/User/AppData/Local/Composer/repo)
[cache-vcs-dir] {$cache-dir}/vcs (C:/Users/User/AppData/Local/Composer/vcs)
[cache-ttl] 15552000
[cache-files-ttl] 15552000
[cache-files-maxsize] 300MiB (314572800)
[discard-changes] false
[prepend-autoloader] true
[github-domains] [github.com]
[home] C:/Users/User/AppData/Roaming/Compose

回答1:


The namespace for guzzle 4 is GuzzleHttp in guzzle 3 the namespace was simply Guzzle.

A composer.json of:

{
    "require": {
        "guzzlehttp/guzzle": "~4"
    }
}

Should allow you to run a php script of:

require 'vendor/autoload.php';

use GuzzleHttp\Client;

$client = new Client();

$requests = Array(
    $client->createRequest('GET', 'ams1.myapp.com:8080/api/ffmpeg_make_snapshots.php'),
    $client->createRequest('GET', 'ams2.myapp.com:8080/api/ffmpeg_make_snapshots.php'),
    $client->createRequest('GET', 'ams3.myapp.com:8080/api/ffmpeg_make_snapshots.php'),
);

$client->sendAll($requests);

If the autoloader still fails after changing the namespace it could be that your version of composer is out of date and does not recognize PSR4 autoloading. If there is no file in vendor/composer/autoload_psr4.php try doing a composer self-update followed by a composer dump-autoload to see if the problem is resolved.



来源:https://stackoverflow.com/questions/24963487/composer-autoloader-not-loading-guzzlehttp-clientinterface

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!