PHP Laravel: Class 'GuzzleHttp\Client' not found obwohl installiert..

FrazeColder

Lt. Commander
Registriert
Okt. 2013
Beiträge
1.721
Moin zusammen,

ich habe eine Laravel PHP Library auf der ich vorhin per Composer Guzzle installiert habe mittels:

Code:
composer require guzzlehttp/guzzle

Wenn ich mein PHP Skript nach der Installation ausführe, dann funktioniert alles. Doch ab dem zweiten Mal bekomme ich Folgende Fehlermeldung:

Class 'GuzzleHttp\Client' not found

Es wird mir unter
Code:
composer show -i
auch nicht mehr das Package guzzlehttp/guzzle angezeigt... Ebenfalls habe ich auch schon
Code:
composer update
und
Code:
composer dump-autoload
ausgeführt. Bringt nur nichts... selber Fehler noch...

Wieso bekomme ich diese Fehlermeldung bzw. wie kann ich sie beheben. Es macht keinen Unterschied ob ich in PHP
Code:
use GuzzleHttp\Client;
oder
Code:
new \GuzzleHttp\Client();
verwende. Beide mal immer der Fehler:

Class 'GuzzleHttp\Client' not found

Ich würde mich sehr über Hilfe freuen.
Mit freundlichen Grüßen und Vielen Dank
 
guzzle ist keine laravel library.. sonder eine ganze normale library.. nutzt du denn überhaupt laravel oder irgendwie was anderes?
 
Zeig mal ein bisschen Code... ansonsten ist das nur raten. Die Autoloader Datei von Composer hast du eingebunden an der Stelle wo der Guzzle Client verwendet wird?
 
Hier ein wenig Code:

Code:
namespace App\Console\Commands;

use GuzzleHttp\Client;
use Illuminate\Console\Command;

class IssueInvoice extends Command
{
    protected $signature = 'radlvoo:issueInvoice';
    private $client_id = "CENSORED";

    public function __construct()
    {
         parent::__construct();
    }

    public function handle()
    {
		$this->client = new \GuzzleHttp\Client();
		$respone = $this->client->request('Get', "https://app.debitoor.com/login/oauth2/authorize?client_id=" . $this->client_id . "&response_type=code&lang=de-de");

		var_dump($respone);
		die();
    }
}

Meine Composer.json:

Code:
{
    "name": "laravel/laravel",
    "description": "The Laravel Framework.",
    "keywords": ["framework", "laravel"],
    "license": "MIT",
    "type": "project",
    "require": {
        "php": ">=7.0.0",
        "barryvdh/laravel-cors": "^0.11.0",
        "fideloper/proxy": "~3.3",
        "laravel/framework": "5.5.*",
        "laravel/tinker": "~1.0",
        "zanysoft/laravel-zip": "^1.0"
    },
    "require-dev": {
        "filp/whoops": "~2.0",
        "fzaninotto/faker": "~1.4",
        "mockery/mockery": "~1.0",
        "phpunit/phpunit": "~6.0",
        "symfony/thanks": "^1.0"
    },
    "autoload": {
        "classmap": [
            "database/seeds",
            "database/factories"
        ],
        "psr-4": {
            "App\\": "app/"
        }
    },
    "autoload-dev": {
        "psr-4": {
            "Tests\\": "tests/"
        }
    },
    "extra": {
        "laravel": {
            "dont-discover": [
            ]
        }
    },
    "scripts": {
        "post-root-package-install": [
            "@php -r \"file_exists('.env') || copy('.env.example', '.env');\""
        ],
        "post-create-project-cmd": [
            "@php artisan key:generate"
        ],
        "post-autoload-dump": [
            "Illuminate\\Foundation\\ComposerScripts::postAutoloadDump",
            "@php artisan package:discover"
        ]
    },
    "config": {
        "preferred-install": "dist",
        "sort-packages": true,
        "optimize-autoloader": true
    }
}

Ich bekomme halt immer den Fehler bei meiner Bash:
Code:
Failed loading /usr/lib/php/20151012/ioncube_loader_lin_7.1.so:  /usr/lib/php/20151012/ioncube_loader_lin_7.1.so: undefined symbol: zend_interrupt_function

Glaube aber nicht, dass das damit was zu tun hat... Bin eher ratlos
 
Die Extension die du laden willst hat ein Problem. Steht ja dabei dass Ioncube in unbekanntes Symbol benutzt. Das hat nichts mit Guzzle oder Laravel zu tun
 
Aber ich vermute, dass deswegen Guzzle nicht funktioniert... Es ist eben komisch, dass Guzzle installiert ist laut `composer show -i``und es auch funktioniert aber immer nur beim ersten Mal. Sobald ich es mehr als einmal ausführe, findet Laravel die Klasse nicht mehr und Guzzle ist laut `composer show -i` auch nicht mehr installiert..
 
Nach der Ausführung von `composer require guzzlehttp/guzzle` sollte dieses Package in der composer.json unter `require:` eingetragen sein. Wenn es das nicht ist, dann musst du herausfinden, warum nicht. So aus der Ferne lässt sich das leider nicht ohne weiteres sagen.
 
NullPointer schrieb:
Nach der Ausführung von `composer require guzzlehttp/guzzle` sollte dieses Package in der composer.json unter `require:` eingetragen sein. Wenn es das nicht ist, dann musst du herausfinden, warum nicht. So aus der Ferne lässt sich das leider nicht ohne weiteres sagen.

Genau das ist es eben nicht... Wie bekomme ich das heraus?
 
Composer liefert eine Rückmeldung darüber ob ein Paket installiert wurde oder nicht.
 
Ich bekomme in der Bash zwar angezeigt "installiert" aber es ist eben nicht in der composer.json eingetragen
 
Es gibt --verbose für mehr Logging und --dry-run fürs Testen ob eine Installation überhaupt möglich ist. Da kommt immer ein Haufen an Text mit raus. Die Fehlermeldung mit der Extension ist ein anderes Problem. Das Problem mit der Extension müsste allerdings immer auftreten - selbst bei aufrufen wie php -i in der Shell
 
Zurück
Oben