Composer autoloader not loading GuzzleHttp\ClientInterface

23,381

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.

Share:
23,381
Maykonn
Author by

Maykonn

Solid knowledge on: I'm a web backend software architect 10+ years working with programing problems, especially on distributed cloud solutions Backend, APIs, microservices and cloud infrastructure specialist Architecture and development of RESTful APIs Complex and critical problem solving GoF Patterns, DDD, SOLID Programming concise, clean, without coupling, easy maintainability, safe and performance. Laravel, Symfony, Zend, Yii, and much more Redis and Memcached as cache or DB Apache, Nginx, Node.js Relational and NoSQL databases UML, analisys, management, engineering and software architecture Agile Development and Classics Methodologies Versioning, GIT, SVN https://github.com/maykonn

Updated on July 09, 2022

Comments

  • Maykonn
    Maykonn almost 2 years

    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": "[email protected]",
                        "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": "[email protected]",
                        "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
    
  • Maykonn
    Maykonn almost 10 years
    I change to "guzzlehttp/guzzle": "4.0" and run composer install, but now error is: Fatal error: Class 'GuzzleHttp\Client' not found. And use stmt to use GuzzleHttp\Client;
  • Steve Buzonas
    Steve Buzonas almost 10 years
    @Maykonn the ~4 would suffice as that installs anything greater than or equal to version 4. Can you provide your composer.lock? The versions you should be pulling in with that composer.json should be able to find the GuzzleHttp namespace.
  • Maykonn
    Maykonn almost 10 years
    see EDIT 2, is there anything wrong? It was generated automatically by composer install..
  • Maykonn
    Maykonn almost 10 years
    My composer out of date. Now is all ok! Thanks!