运行php artisan serve
并访问我的主页时出现此错误:
ReflectionException (-1)
Class setEventDispatcher does not exist
Laravel版本:5.6.39 环境:当地 操作系统:macOS Mojave 10.14.2
当我在另一个项目中使用npm
时出错时,它开始了,所以我重新安装了节点(this way)。
执行完该操作后,将无法启动该项目(有问题的)。运行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
该错误已由updating and upgrading brew解决。
然后,我能够启动项目(php artisan serve
)。但是当我访问主页时,显示此错误:
ReflectionException (-1)
Class setEventDispatcher does not exist
如果我遵循堆栈跟踪,那么我可以看到正是这一行(来自我的homeController
)触发了错误:
if( ! Auth::check() ){
return view( 'pages.home' );
}
如果我将其注释掉,则从另一个使用Auth
模块的位置发生了同样的错误。
这是堆栈跟踪:
有人知道如何解决这个问题吗?我在Google上找不到任何有希望的结果,而且我也不知道为什么会这样...:-/
我尝试了composer clear-cache
并删除了供应商文件夹,然后执行了composer install
,问题仍然出现。
我也按照Marcus的建议检查了我的服务提供商-但我真的不知道在那里寻找什么。一切看起来都很规律(没有花哨的if陈述或其他内容)。
我意识到,我无法使用Sequel Pro连接到数据库。这是因为Brew将我的MySQL版本从5.5更新到了8.0。
这是通过按照以下方式做 来解决的(我做了很多事情,所以我可能缺少很多步骤):
brew unlink mysql
brew install mysql@5.7
brew switch mysql 5.7.21
brew link mysql
,然后我可以使用mysql --version
验证版本。该MySQL版本更改也存在一些权限问题,但是我正在发出该消息,因此不会太久。
我尝试禁用Laravel Debugbar(通过从composer.json
删除,删除composer.lock
和vendor
然后运行composer install
)。这样就解决了! ...但是!
后来我尝试安装Barryvdh的IDE Helper时,又出现了完全相同的错误 !!
我执行了以下三个步骤,以安装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弹出)。
答案 0 :(得分:3)
尝试了所有解决方案,但没有一个起作用。
最后,我意识到,当尝试将php升级到7.3.3时,它实际上是导致失败的网络错误。阅读日志,再次尝试,重新启动代客服务,然后再次尝试。
现在可以使用。
升级到7.3.3确实是解决方案。
谢谢!
答案 1 :(得分:2)
这就是通常为我解决的问题
通过删除供应商文件夹和composer.lock重新安装composer依赖项。然后运行function ajaxObj( meth, url ) {
var x = new XMLHttpRequest();
x.open( meth, url, true );
x.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
return x;
}
function ajaxReturn(x){
if(x.readyState == 4 && x.status == 200){
return true;
}
,然后运行composer clear-cache
(通常是问题所在)
检查所有服务提供商是否已正确导入到app.php中的目录config下
确保您的服务提供商没有导入不存在的内容,例如,如果您在生产中注册了服务提供商,但仅作为dev安装:
composer install
答案 2 :(得分:2)
如果您使用代客服务,我会解决
valet restart
,一切正常。
欢呼!
答案 3 :(得分:1)
对我来说,解决方法是将PHP更新到7.3.3,然后重新启动valet。显然,这是php 7.3的错误
https://github.com/laravel/framework/issues/27052
希望这会有所帮助
答案 4 :(得分:0)
我有个主意...在重新配置apache虚拟主机端口后,我刚刚遇到了这个问题,所以我再次重新启动了apache / httpd,问题消失了。可能与服务器环境有关吗?
答案 5 :(得分:0)
我在Mac Book Pro中面临相同的问题。我的系统配置是PHP 7.3,MySQl,并且使用SQL Pro。我已经实现了上述所有方法,但是没有任何效果。 对于我来说,这个问题仍然是个谜,但是对于暂时的问题,我已经使用 工匠的命令如下。
php工匠服务
它可以让我在http://localhost:8000上运行项目 希望这可以解决这个问题。
答案 6 :(得分:0)
尝试重新启动PHP。当我重新启动Mac时,就会发生这种情况。重新启动PHP后,一切都会开始工作。
sudo brew services restart nginx