За последние 24 часа нас посетили 258282 программиста и 2011 роботов. Сейчас ищут 2043 программиста ...

Class 'Client' not found

Тема в разделе "PHP для новичков", создана пользователем marigolu, 12 мар 2018.

  1. marigolu

    marigolu Новичок

    С нами с:
    12 мар 2018
    Сообщения:
    15
    Симпатии:
    0
    Подскажите плиз.
    Установлен guzzle через composer.
    Composer.json:
    {
    "require": {
    "guzzle/guzzle": "~3.7",
    "guzzlehttp/guzzle": "^3.8"
    }
    }

    Но при вызове
    $client = new Client();
    выдается ощибка класс Client не найден.

    use Guzzle\Http\Client;
    include('vendor/autoload.php');

    Есть ли версии почему? Спасибо!
     
  2. marigolu

    marigolu Новичок

    С нами с:
    12 мар 2018
    Сообщения:
    15
    Симпатии:
    0
    Техподдержка ответила:
    >В данной ситуации класс не оказывается найден по причине того, что код Ваших скриптов запрашивает элементы дополнительных пакетов, как если бы они были установлены глобально, в то время как их установка локальна.

    Вызываю разными способами:

    use GuzzleHttp\Client;

    $client = new Client(array('base_uri' => $url,) );
    $client = new GuzzleHttp\Client();
    $client = new Guzzle\Client();

    Итог один. Класс Client не найден.

    Как вызывать локально установленные библиотеки?
     
  3. valentinnew

    valentinnew Активный пользователь

    С нами с:
    30 янв 2011
    Сообщения:
    161
    Симпатии:
    36
    Могу предположить что autoload не настроен
    Нужно код смотреть.
     
  4. romach

    romach Старожил

    С нами с:
    26 окт 2013
    Сообщения:
    2.904
    Симпатии:
    719
    composer update / install?
     
  5. marigolu

    marigolu Новичок

    С нами с:
    12 мар 2018
    Сообщения:
    15
    Симпатии:
    0
    autoload.php:
    Код (Text):
    1. <?php
    2.  
    3. // autoload.php @generated by Composer
    4.  
    5. require_once __DIR__ . '/composer/autoload_real.php';
    6.  
    7. return ComposerAutoloaderInitc7bb6c8e41aef98c7344804ef0b::getLoader();
    Какой код показать?
     
  6. romach

    romach Старожил

    С нами с:
    26 окт 2013
    Сообщения:
    2.904
    Симпатии:
    719
    Ну давайте по порядку. Актуальная версия нынче 6.*, вы же ставите древние версии, причем две древние версии. Потому composer require guzzlehttp/guzzle:~6.0, а старое - удалить.

    Дальше примерно так:

    PHP:
    1. require 'vendor/autoload.php';
    2.  
    3. use GuzzleHttp\Client;
    4.  
    5. $client = new Client([
    6.     // Base URI is used with relative requests
    7.     'base_uri' => 'http://httpbin.org',
    8.     // You can set any number of default request options.
    9.     'timeout'  => 2.0,
    10. ]);
    Документация тут: http://docs.guzzlephp.org/en/stable/index.html (со времен 3 версии api изменился очень сильно, потому все примеры лучше брать именно здесь)
     
  7. marigolu

    marigolu Новичок

    С нами с:
    12 мар 2018
    Сообщения:
    15
    Симпатии:
    0
    Cпасибо, поняла вас. У меня проблема в том, что на хосте установлена php 5.3
    Постараюсь это решить.

    Вы пишите:
    а старое - удалить

    Вопрос: Как удалять старые пакеты в композере? Он вроде автоматом обновит и все? Или нужна именно команда удаления?
     
  8. marigolu

    marigolu Новичок

    С нами с:
    12 мар 2018
    Сообщения:
    15
    Симпатии:
    0
    Большое спасибо!
    Установили все. Сейчас composer show выдает:

    agromirooo@bitrix268:~$ composer show

    doctrine/inflector v1.2.0 Common String Manipulations with regard ...
    guzzlehttp/guzzle 6.3.0 Guzzle is a PHP HTTP client library
    guzzlehttp/promises v1.3.1 Guzzle promises library
    guzzlehttp/psr7 1.4.2 PSR-7 message implementation that also p...
    illuminate/contracts v5.5.39 The Illuminate Contracts package.
    illuminate/support v5.5.39 The Illuminate Support package.
    irazasyed/telegram-bot-sdk v3.0.0 The Unofficial Telegram Bot API PHP SDK
    league/event 2.1.2 Event package
    nesbot/carbon 1.24.2 A simple API extension for DateTime.
    psr/container 1.0.0 Common Container Interface (PHP FIG PSR-11)
    psr/http-message 1.0.1 Common interface for HTTP messages
    psr/simple-cache 1.0.1 Common interfaces for simple caching
    symfony/event-dispatcher v2.8.36 Symfony EventDispatcher Component
    symfony/polyfill-mbstring v1.7.0 Symfony polyfill for the Mbstring extension
    symfony/translation v3.4.6 Symfony Translation Component

    Вопрос. Как обращаться теперь из проекта? У меня в проекте папки vendor нет. Композер глобально стоит.
    Опять все мои попытки приводят к ошибке:

    PHP Fatal error: Uncaught Error: Class 'GuzzleHttp\Client' not found in /home/a/agromirooo/shop/public_html/test.php:3

    Код (Text):
    1. <?php
    2.  
    3. //require 'vendor/autoload.php';
    4. use GuzzleHttp\Client;
    5. $client = new Client([
    6.     // Base URI is used with relative requests
    7.     'base_uri' => 'http://httpbin.org',
    8.     // You can set any number of default request options.
    9.     'timeout'  => 2.0,
    10. ]);
    11. ?>
     
  9. marigolu

    marigolu Новичок

    С нами с:
    12 мар 2018
    Сообщения:
    15
    Симпатии:
    0
    Иными словами вопрос: глобально композер создан, библиотека
    irazasyed/telegram-bot-sdk
    установлена, все зависимости тоже.
    Теперь что делать в проекте? Как-то клонировать?
     
  10. valentinnew

    valentinnew Активный пользователь

    С нами с:
    30 янв 2011
    Сообщения:
    161
    Симпатии:
    36
    У тебя есть composer.json - он должен лежать в корне.
    В этой папке выполни "composer install"
    При этом создастся папка vendor
    Далее расскомменть в своем скрипте require 'vendor/autoload.php';
    Твой скрипт тоже должен лежать в корне (рядом с composer.json и папкой vendor)
     
    marigolu нравится это.
  11. marigolu

    marigolu Новичок

    С нами с:
    12 мар 2018
    Сообщения:
    15
    Симпатии:
    0
    Большое спасибо! Все это сделала. Папка vendor появилась.
    Но у меня composer.json был пустой: {}
    Я вообще не понимаю откуда он взялся там...
    Поэтому опять та же ошибка: класс Client не найден.

    Вопрос. Что нужно прописать в composer.json чтобы заработало глобально установленные пакеты composera? Глобально вроде все что надо уже стоит.
     
  12. valentinnew

    valentinnew Активный пользователь

    С нами с:
    30 янв 2011
    Сообщения:
    161
    Симпатии:
    36
    Код (Text):
    1. {
    2.     "require": {
    3.         "guzzle/guzzle": "~3.7",
    4.         "guzzlehttp/guzzle": "^3.8"
    5.     }
    6. }
    должен быть composer.json, а не Composer.json (первый ваш пост)
     
    marigolu нравится это.
  13. marigolu

    marigolu Новичок

    С нами с:
    12 мар 2018
    Сообщения:
    15
    Симпатии:
    0
    Прописала composer.json
    {
    "require": {
    "guzzlehttp/guzzle": "^6.3.0"
    }
    }
    Выполнила: composer install

    Моя ошибка пропала.
    Большое спасибо!!!