Composer自动加载器未加载GuzzleHttp \ ClientInterface

时间:2014-07-25 19:52:46

标签: php curl composer-php autoload guzzle

我正在尝试使用Guzzle,但我收到以下致命错误:

  

致命错误:未找到类'GuzzleHttp \ ClientInterface'   第13行/var/www/myapp/vendor/guzzlehttp/guzzle/src/functions.php

我正在使用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);

发生了什么事?

修改

我的composer.json:

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

编辑2

我的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": []
}

编辑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 个答案:

答案 0 :(得分:12)

guzzle 4的命名空间是GuzzleHttp,在guzzle 3中,命名空间只是Guzzle

composer.json

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

应该允许您运行以下的PHP脚本:

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);

如果自动加载器在更改命名空间后仍然失败,则可能是您的作曲家版本已过期且无法识别PSR4自动加载。如果vendor/composer/autoload_psr4.php中没有文件,请尝试执行composer self-update后跟composer dump-autoload以查看问题是否已解决。