Guzzle Http не найден mailgun

Я пытаюсь использовать Mailgun в своем проекте php. Я установил все необходимые компоненты:

  • Композитор
  • Жрать 6

Это мой PHP-код для тестирования службы электронной почты:

require 'vendor/autoload.php';
ini_set('display_errors', 'On');
$client = new \Http\Adapter\Guzzle6\Client();

define('MAILGUN_KEY', 'key-xxxxxxxxxx');
define('MAILGUN_DOMAIN', 'my-domain.nl');

$mailgun = new \Mailgun\Mailgun(MAILGUN_KEY, $client);

$mailgun->sendMessage(MAILGUN_DOMAIN, [
            'from'      => '[email protected]',
            'to'        => '[email protected]',
            'subject'   => 'This is a test e-mail',
            'html'      => "
                Hello,</br></br>
                This is a test." 
        ]);

Он по-прежнему выдает следующую ошибку:

Fatal error: Class 'Http\Adapter\Guzzle6\Client' not found

Почему он по-прежнему не может найти Guzzle6, пока он установлен и требуется в composer.json?

РЕДАКТИРОВАТЬ:

Возможно, какая-то важная информация, я установил composer и Guzzle в /usr/local/lib и сделал их доступными по всему миру. Должен ли я сделать это таким образом или установить их в корневую папку моего домена?


person idejong    schedule 15.09.2016    source источник
comment
Разве не должно быть $client = new \GuzzleHttp\Client();   -  person Farkie    schedule 15.09.2016
comment
Это просто возвращает другую ошибку: Fatal error: Class 'GuzzleHttp\Client'вместо другой... так что пока не повезло..   -  person idejong    schedule 16.09.2016
comment
что вы подразумеваете под глобальным доступом?   -  person Dmitry Malyshenko    schedule 16.09.2016
comment
На этом сервере несколько доменов. Я установил пакет и сделал его исполняемым для каждого пользователя на сервере, поэтому мне не нужно устанавливать его отдельно для каждого домена.   -  person idejong    schedule 16.09.2016


Ответы (1)


Я нашел причину проблемы:

Очевидно, мне нужно было установить зависимости composer и mailgun в корневую папку моего домена, а не глобально.

Я изменил путь к жратве на этот, потому что нашел это на форуме:

$client = новый \GuzzleHttp\Client();

который дал мне эту ошибку:

    Catchable fatal error: Argument 2 passed to   Mailgun\Mailgun::__construct() must be an instance of Http\Client\HttpClient, instance of GuzzleHttp\Client

Что я исправил, выполнив эту команду в терминале:

    php composer.phar require php-http/guzzle6-adapter:^1.0

и изменив путь обратно на исходный путь:

    $client = new \Http\Adapter\Guzzle6\Client();

Итак, теперь mailgun отлично работает, используя этот код:

require 'vendor/autoload.php';
ini_set('display_errors', 'On');
$client = new \Http\Adapter\Guzzle6\Client();

define('MAILGUN_KEY', 'key-xxxxxxxxxx');
define('MAILGUN_DOMAIN', 'my-domain.nl');

$mailgun = new \Mailgun\Mailgun(MAILGUN_KEY, $client);

$mailgun->sendMessage(MAILGUN_DOMAIN, [
        'from'      => '[email protected]',
        'to'        => '[email protected]',
        'subject'   => 'This is a test e-mail',
        'html'      => "
            Hello,</br></br>
            This is a test." 
    ]);
person idejong    schedule 16.09.2016