今天要在项目中(TP6)使用workerman,在使用composer安装workman的时候报了以下的错误:

尝试使用网上查找的的方法:
//先删除composer.lock文件再在命令行中执行以下命令
composer update
但是使用这个方法并不能解决问题。
继续尝试了许多网上的方法无果,没办法只能跑断点了。在项目的think文件中,打上断点,在项目中运行composer命令的时候就能跑进去。

当跑到反射执行类进行依赖注册的时候,xdebug提示了一个错误:

提示:crmeb\subscribes\SystemSubscribe does not exist
知道具体错误接下来就好办了:
首先我查看了项目的结构,非常确定,这个类是存在的:

文件名字,命名空间,类名都是正确的,这时候我下意识的认为是composer的自动加载出了问题,马上查看了autoload-psr4文件夹跟autoload_static文件,发现果然没有引入crmeb目录下的类


到这里,答案已经呼之欲出了。立马查看composer.json文件,发现了问题的根本所在:

项目根本没加载crmeb!
把crmeb加上之后再执行composer update,一切正常了

项目已经成功运行,并且composer不再报错。现在的问题是,是谁,为什么要删掉这行代码。根据提交记录很快就锁定了一名老哥,据他所说,不知道这是干嘛的,就误删了。。。。。。。。。气得吐血。。。
博主在TP6项目中使用Composer安装Workerman报错,尝试多种网上方法无果后跑断点排查。发现反射执行类依赖注册时提示类不存在,经检查是Composer自动加载问题,根源在于项目未加载crmeb目录。添加后项目正常运行,最终查明是有人误删相关代码。

1692

被折叠的 条评论
为什么被折叠?



