Pereiti prie turinio
← Visos PrestaShop 9 klaidos

PrestaShop 9 klaidos

Class "GuzzleHttp\Client" not found PrestaShop 9 versijoje

PrestaShop 9 nebeturi Guzzle HTTP bibliotekos. Moduliai, kurie su GuzzleHttp\Client kviečia išorines sistemas (mokėjimų, siuntimo, prekių srautų, ERP), sustoja, jei neturi savos kopijos.

Klaida
Class "GuzzleHttp\Client" not found
Pašalinta
PrestaShop 9.0
Dažniausiai randama
Mokėjimų, siuntimo, prekyviečių ir ERP moduliai

Kas nutiko

Iki 8 versijos PrestaShop savo HTTP užklausoms turėjo Guzzle biblioteką, ir daug modulių ja naudojosi patys jos neįtraukę: new GuzzleHttp\Client() tiesiog veikė. PrestaShop 9.0 Guzzle iš branduolio pašalino.

Modulis, kuris rėmėsi branduolio kopija, dabar sustoja ties pirma užklausa su Class "GuzzleHttp\Client" not found. Dažniausiai tai moduliai, bendraujantys su išorine paslauga: mokėjimų sistemos, kurjerių kainos ir etiketės, prekių srautai, prekyvietės, ERP ar apskaitos sinchronizacija.

Todėl ši klaida brangi. Parduotuvė atrodo normaliai, bet iš apmokėjimo dingsta pristatymo būdai, nepavyksta mokėjimai ar nustoja sinchronizuotis likučiai.

Sprendimas

Modulis turi turėti savo HTTP klientą:

  • Įtraukti Guzzle į modulį. Pridėti jį į modulio composer.json ir pateikti kartu modulio vendor/ aplanką. Moduliai, kurie taip jau darė, veikia toliau.
  • Arba naudoti Symfony HttpClient, kurį PrestaShop 9 turi, jei modulis skirtas tik PrestaShop 9.
  • Arba ieškoti atnaujinimo. Mokėjimų ir siuntimo paslaugų teikėjai paprastai išleidžia PrestaShop 9 versiją – tai saugiau nei taisyti jų kodą.
// Kai Guzzle yra paties modulio vendor aplanke
require_once __DIR__ . '/vendor/autoload.php';
$client = new GuzzleHttp\Client(['timeout' => 10]);

Kai du moduliai turi skirtingas Guzzle versijas, laimi pirmas įkeltas, o kitame gali atsirasti keistų klaidų. Gerai padaryti moduliai savo priklausomybes pervadina (pavyzdžiui, su PHP-Scoper), kad to išvengtų.

Kur dar slepiasi

grep -rln "GuzzleHttp" modules/ override/ | grep -v "/vendor/"

Failai paties modulio vendor/ aplanke tvarkoje. Tikrinti reikia modulio failus, kurie naudoja Guzzle, kai modulis neturi savo vendor/guzzlehttp.

Raskite visas tokias vietas prieš atnaujindami

Kur yra vienas pašalintas kvietimas, paprastai yra ir daugiau. Mūsų nemokama PrestaShop 9 parengties patikra perskaito visų modulių, temos ir override failų kodą ir parodo kiekvieną problemą su failu ir eilute. Ji tik skaito, nieko nekeičia.

Gauti nemokamą patikrą

Nenorite taisyti patys? Parduotuves į PrestaShop 9 atnaujiname už fiksuotą kainą. Apie atnaujinimą