Я получаю эту ошибку, когда запускаю php artisan serve и захожу на свою домашнюю страницу:
ReflectionException (-1)
Class setEventDispatcher does not exist
Версия Laravel: 5.6.39 Окружающая среда: местная ОС: macOS Mojave 10.14.2
Это началось, когда у меня возникла ошибка при использовании npm (в другом проекте), поэтому я переустановил Node (Сюда).
После этого этот проект (о котором идет речь) не мог быть запущен. Я получал эту ошибку при запуске php artisan serve:
dyld: Library not loaded: /usr/local/lib/libpng16.16.dylib with anything php related
Referenced from: /usr/local/bin/php
Reason: image not found
Эта ошибка была устранена обновление и обновление пива.
Тогда я смог запустить проект (php artisan serve). Но когда я захожу на домашнюю страницу, была показана эта ошибка:
ReflectionException (-1)
Class setEventDispatcher does not exist
Если я прослежу трассировку стека, то вижу, что именно эта строка (из моего homeController) вызвала ошибку:
if ( ! Auth::check() ){
return view( 'pages.home' );
}
Если я это закомментировал, то такая же ошибка произошла из другого места, где использовался модуль Auth.
Вот трассировка стека:
Кто-нибудь знает, как это решить? Я не могу найти многообещающих результатов в Google, и я понятия не имею, почему это происходит ...: - /
Я попробовал composer clear-cache и удалил папку vendor, а затем сделал composer install, и проблема все еще возникла.
Я также проверил своих поставщиков услуг, как предложил Маркус, но я действительно не знаю, что там искать. Все это выглядит довольно регулярно (без каких-либо причудливых операторов if или чего-то еще).
Я понял, что не могу подключиться к своей базе данных с помощью Sequel Pro. Причина в том, что Брю обновил мою версию MySQL с 5.5 до 8.0.
Это было решено путем выполнения что-то вместе этих строк (я сделал кучу вещей, поэтому мне может не хватать пары шагов):
brew unlink mysql
brew install [email protected]
brew switch mysql 5.7.21
brew link mysql
и я смог затем проверить версию с помощью mysql --version. У меня также были некоторые проблемы с разрешениями с этим изменением версии MySQL, но я испускаю его, так что это не длится слишком долго.
Я попытался отключить Отладочная панель Laravel (удалив его из composer.json, удалив composer.lock и vendor, а затем запустив composer install). И это исправило !! ... Но!
Когда я позже попытался установить IDE Helper Barryvdh, то та же самая ошибка вернулась !?
Я выполнил эти три шага, чтобы установить IDE Helper (и повторно ввести ошибку):
Выполните эту команду из корня моего каталога: curl https://gist.githubusercontent.com/barryvdh/5227822/raw/4be028a27c4ec782965bb8f2fdcb4c08c71a441d/_ide_helper.php -o _ide_helper.php
Добавьте эти строки в app/Provider/AppServiceProvider.php:
...
if ($this->app->environment() !== 'production') {
$this->app->register(\Barryvdh\LaravelIdeHelper\IdeHelperServiceProvider::class);
}
composer require --dev barryvdh/laravel-ide-helperИтак, я вернулся к этой ошибке:
ReflectionException (-1)
Class setEventDispatcher does not exist
... Трассировка стека идентична показанной ранее (получена из Container.php).






Так вот что обычно исправляет для меня
Переустановите зависимости композитора, удалив папку vendor и composer.lock. Затем запустите composer clear-cache, а затем composer install (обычно это проблема)
Убедитесь, что все поставщики услуг правильно импортированы в app.php в конфигурации каталога.
Убедитесь, что ваши поставщики услуг не импортируют то, чего не существует, например, если вы регистрируете поставщика услуг в производственной среде, но устанавливается только как dev:
if (env('APP_DEBUG')) {
$app->register(Barryvdh\Debugbar\LumenServiceProvider::class);
}
Я сделал шаг 1 - и это заставило меня понять, что домашняя страница отображается как должна, если пользователь не вошел в систему. Так что это должно быть что-то с Auth-пакетом / модулем. Я просмотрел app.php, но не вижу ничего, что должно быть не так. Однако - у меня не так много опыта работы с поставщиками услуг. Поэтому я прикасаюсь к нему только в том случае, если какой-то гид мне говорит (и я делаю то, что он мне говорит, не задавая вопросов). ... Значит, это не решило мою проблему. Тем не менее, хорошие предложения. :-)
Рад, что помог! Был бы признателен, если бы вы отметили это как правильный ответ :)
Не думаю, что вы читали мой комментарий. Я выполнил все три ваших шага, и это не помогло. : - / Я добавил подробности в вопрос.
Теперь я понял, хорошо!
Ага. Ничего не меняет. :-(
У меня есть идея ... Я только что столкнулся с этой проблемой после перенастройки портов виртуального хоста apache, поэтому я снова перезапустил apache / httpd, и проблема исчезла. Может быть, это связано с серверной средой?
Хм ... Я работаю в своей локальной среде. Но, может быть, проблема в этом. Я пытался перезапустить сервер (много раз), и это не имело значения.
Я столкнулся с той же проблемой в Mac Book Pro. Моя системная конфигурация - PHP 7.3, MySQl, и я использую SQL Pro. Я реализовал все вышеперечисленные методы, но ничего не работает. Проблема все еще остается для меня загадкой, но временно я решил ее, используя команда ремесленника, как показано ниже.
php artisan serve
Разрешите мне запустить проект на http: // локальный: 8000 Надеюсь, это поможет решить эту проблему.
Попробуйте перезапустить PHP. Когда я перезагружаю свой Mac, это происходит. После перезапуска PHP все начинает работать.
sudo brew services restart nginx
Если вы используете камердинера, я решил, что он работает
valet restart и все нормально работает.
ваше здоровье!
Для меня исправление заключалось в обновлении PHP до версии 7.3.3, а затем перезапуске камердинера. Видимо это была ошибка с php 7.3
https://github.com/laravel/framework/issues/27052
Надеюсь это поможет
Пробовал все решения, ни одно из них не помогло.
Наконец, я понял, что при попытке обновить php до 7.3.3 произошел сбой из-за сетевой ошибки. Прочитал журналы, попробовал еще раз, перезапустил камердинера и повторил попытку.
Теперь это работает.
Обновление до 7.3.3 действительно было решением.
Спасибо!
У меня тоже сработало обновление PHP-версии 7.3.0. Заявлено здесь
Не знаю, поможет ли это вам, но я получал те же ошибки
Class setEventDispatcher does not existпосле попытки обновления с 5.5 до 5.6, позже я понял, что не выполнил все шаги на странице обновления Laravels: laravel.com/docs/5.6/upgrade после того, как я это сделал, и снова для 5.7 мое приложение снова работало.