2014-07-25 34 views
7

Próbuję użyć Guzzle, ale ja dostaję następujący błąd krytyczny:Kompozytor autoloader nie ładuje GuzzleHttp ClientInterface

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

mam autoloading z kompozytorem autoloaderze:

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

Co się dzieje?

EDIT

Moja composer.json:

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

EDIT 2

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

Edycja 3

kompozytor konfiguracja wyjściowa -l:


[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 
+0

Przestrzenie nazw nie pasują do siebie. Próbuje załadować 'GuzzleHttp \ ClientInterface' i powinno to być' Guzzle \ Http \ ClientInterface' –

+0

. Wydaje się, że występuje konflikt z functions.php znalezionym w katalogu głównym Guzzle'a. – Maykonn

+0

Czy możesz podać swój "composer.json"? –

Odpowiedz

12

namespace do guzzle 4 jest GuzzleHttp w guzzle 3, nazw po prostu Guzzle.

composer.json od:

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

powinno pozwolić na uruchomienie skryptu 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); 

Jeśli autoloader nadal nie po zmianie nazw mogłoby się okazać, że twoja wersja kompozytora jest nieaktualny i nie rozpoznaje automatycznego ładowania. Jeśli w pliku vendor/composer/autoload_psr4.php nie ma pliku, spróbuj wykonać composer self-update, a następnie composer dump-autoload, aby sprawdzić, czy problem został rozwiązany.

+0

Zmieniam na '" guzzlehttp/guzzle ":" 4.0 "' i uruchom 'composer install', ale teraz błąd jest następujący:' Błąd krytyczny: nie znaleziono klasy 'GuzzleHttp \ Client''. I użyj stmt do 'use GuzzleHttp \ Client'; – Maykonn

+0

@Maykonn the '~ 4' wystarczyłby, aby zainstalować coś większego lub równego wersji 4. Czy możesz podać swój" composer.lock "? Wersje, które powinieneś ciągnąć za pomocą 'composer.json', powinny być w stanie znaleźć przestrzeń nazw' GuzzleHttp'. –

+0

patrz EDYCJA 2, czy coś jest nie tak? Został wygenerowany automatycznie przez instalatora kompilatora. – Maykonn