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
Composer can generate autoload code according to PSR-4. Therefore, this tool can help you reuse libraries of other PHP projects. For example, I want to create a class named Car with the namespace Vehicle/Listings. Thus, the code of the class will be saved in the src/Listings/Car.php file with the following content: //code...
Run the composer dump-autoload command to generate the necessary files that Composer will use for autoloading. Include the require 'vendor/autoload.php' statement at the top of the file where you want to use autoloading. Autoloading: The files Directive
To use file autoloading, provide a list of files in the files directive of the composer.json file, as shown in the following snippet. As you can see, we can provide a list of files in the files directive that we want to autoload with Composer.
In the composer.json, you add the following code: This code means that Composer will autoload all class files defined the app/models folder. If you have classes from other folders that you want to load, you can specify them in classmap array: { "autoload": { "classmap": [ "app/models", "app/services" ] } }
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.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With