Laravel 5.7: класс setqueue не существует

Получение этой ошибки при попытке отправить простое электронное письмо:

Class setQueue does not exist at vendor/laravel/framework/src/Illuminate/Container/Container.php:779)

Вот код, вызывающий это:

Mail::raw($data['email_body'], function (Message $message) use ($email_or_url, $data) {
    $message->to($email_or_url);
    $message->subject($data['email_subject']);
});

Почему Laravel пытается поставить это в очередь и как мне это остановить?

вы установили QUEUE_CONNECTION в своей конфигурации .env?

har2vey 26.10.2018 08:45

Он установлен на sync ... Я даже не хочу, чтобы он вообще стоял в очереди. Хочу отправить немедленно.

kjdion84 26.10.2018 08:46

Я не сталкивался с такой же проблемой при использовании Mail :: raw () в моем текущем проекте Laravel 5.7. Вы недавно обновляли предыдущую версию?

har2vey 26.10.2018 09:11

Нет, это свежая установка 5.7.

kjdion84 26.10.2018 09:12

Похоже, что теперь это известная проблема, признанная командой разработчиков Laravel, потенциально связанная с PHP 7.3: github.com/laravel/framework/issues/26819

Bryan 19.12.2018 23:38
0
5
1 528
6

Ответы 6

Убедитесь, что вы переименовали свою переменную среды QUEUE_DRIVER в QUEUE_CONNECTION как в config/queue.php, так и в .env - она ​​была переименована в 5.7.

https://laracasts.com/discuss/channels/laravel/trying-to-send-email-class-setqueue-does-not-exist

Why would Laravel be trying to queue this and how do I make it stop?

Он не пытается поставить электронную почту это в очередь, но MailServiceProvider по-прежнему регистрирует драйвер очереди (для случаев, когда электронная почта реализует интерфейс ShouldQueue).

Что странно, эта ошибка возникает только в производственной среде, а не в моем локальном окружении.

kjdion84 26.10.2018 09:19

Вы кешируете конфиг на продакшене? Вы php artisan config:cache повторно запускали?

Travis Britz 26.10.2018 09:19

Я не кэшировал конфигурацию на локальном или производственном компьютере.

kjdion84 26.10.2018 09:24

Может быть, запустить php artisan config:clear и composer dump-autoload, чтобы исключить это? (После двойной проверки того, что переменная переименована в обоих местах)

Travis Britz 26.10.2018 09:38

это происходит со мной, потому что я запускал php 7.3, когда я перехожу на php 7.2.13, он работает, и я также меняю переменную QUEUE_DRIVER в .env и config / queue.php

случай ошибки в проекте laravel для этой проблемы. https://github.com/laravel/framework/issues/26819

Оказалось, проблема в php. Laravel исправил это, поэтому у вас есть 2 варианта исправить. Используйте версию патча и надейтесь, что нет других мест, где php 7.3 ломает laravel, или понизьте версию вашего проекта до 7.2.

Я также сталкиваюсь с той же проблемой в MacBook Pro. Для пользователей MacBook просто используйте команду

"valet restart"

В моем случае сейчас работает. Попробуйте перезапустить сервер, что может быть полезно.

Примечание: я использую PHP 7.3. *

То, что я обнаружил к настоящему времени в своем исследовании решения, заключается в том, что в моем случае речь идет не о версии php (я даже переустановил все и сменил поставщиков серверов из-за ответов laracasts), но это была ошибка, вызванная кодом, и Я знаю, потому что я вернулся к предыдущей фиксации, и она сработала нормально.

В случае мой это было потому, что у меня была транзакция до отправки электронного письма

$suma = $user->transactionsAsUser->filter(
            function ($transaction) {
                return $transaction->status == 'successful' || $transaction->kanjea_ammount < 0;
            }
        )->sum('kanjea_ammount');
        $user->kanjea_balance = $suma;
        $user->save();
\Mail::to($user->email)->send(new \App\Mail\JustRegistered($user));

Когда я удалил этот фрагмент перед последней строкой, все заработало. Даже с использованием PHP 7.3.

Кстати. эта проблема не возникает в моей локальной среде w7 + xampp, а только в dokku

Мое решение было снова использовать valet install, так как я получил ошибку после запуска brew update/upgrade.

связанные детали: PHP 7.3.0 (cli) (built: Dec 7 2018 11:00:11) ( NTS )

Другие вопросы по теме