2014-07-25 92 views
7

我試圖使用Guzzle,但我發現了以下致命錯誤:作曲家自動加載不加載GuzzleHttp ClientInterface

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

我與作曲家自動加載自動加載:

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" 
    } 
} 

EDIT 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": "[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

作曲家配置-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

名稱空間似乎不匹配。它試圖加載'GuzzleHttp \ ClientInterface',它應該是'Guzzle \ Http \ ClientInterface' –

+0

似乎與Guzzle的根目錄中的functions.php有些衝突。 – Maykonn

+0

你可以提供你的'composer.json'嗎? –

回答

12

的命名空間狂飲4是GuzzleHttp在狂飲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以查看問題是否已解決。

+0

我改成''guzzlehttp/guzzle「:」4.0「'並運行'composer install',但現在錯誤是:'致命錯誤:Class'GuzzleHttp \ Client''找不到。並使用stmt來使用GuzzleHttp \ Client; – Maykonn

+0

@Maykonn'〜4'就足夠了,因爲它安裝了大於或等於版本4的任何東西。你可以提供你的'composer.lock'嗎?你應該用這個'composer.json'拉動的版本應該能夠找到'GuzzleHttp'命名空間。 –

+0

見編輯2,有什麼不對嗎?它由作曲家安裝自動生成.. – Maykonn