使用EasyChat时报错:Symfony 和 Psr的 dispatch冲突了

Declaration of Symfony\Contracts\EventDispatcher\EventDispatcherInterface::dispatch(Symfony\Contracts\EventDispatcher\object $event, string $eventName = NULL) must be compatible with Psr\EventDispatcher\EventDispatcherInterface::dispatch(Psr\EventDispatcher\object $event)

 

报错什么意思?

Symfony 和 Psr的 dispatch冲突了

 

报错环境:

php: 7.0.10

fastadmin: thinkphp5.0.24 + bootstrap后台框架

EasyChat: "overtrue/wechat": "~4.2"

 

报错位置:

使用EasyChat时报错:Factory::openWork($providerConfig)

 

解决问题:

更换PHP的版本:换成 PHP7.3 不再报错

 

-------------------------------------------------------记录解决问题的过程,有兴趣可看下-------------------------------------------------------

1.因为是使用EasyChat时报的错误,所以首先找到EasyChat的官网。官网也是这样使用的Factory::openWork($config)

2.使用没有问题,难道是EasyChat的版本问题。然后找到项目下的conposer.json,发现用的是"overtrue/wechat": "~4.2",好像也没什么问题

3.然后,看到conposer.json文件,thinkphp5.0.24要求PHP5.6,接着我切换了5.6的版本试试,结果是连基本语法都已经报错

"require": {
    "php": ">=5.6.0",
    "topthink/framework": "~5.0.24",
    "overtrue/wechat": "~4.2",
    "endroid/qr-code": "^1.9",
    "topthink/think-captcha": "^1.0",
    "mtdowling/cron-expression": "^1.2",
    "phpmailer/phpmailer": "~6.0.6",
    "karsonzhang/fastadmin-addons": "~1.1.9",
    "overtrue/pinyin": "~3.0",
    "phpoffice/phpspreadsheet": "^1.2"
},

4.接着,切回PHP7.0,继续猜问题

5.决定从报错位置开始找。分别找到

Symfony\Contracts\EventDispatcher\EventDispatcherInterface::dispatch
Psr\EventDispatcher\EventDispatcherInterface::dispatch
interface EventDispatcherInterface extends PsrEventDispatcherInterface{}

接口这样继承应该没有问题才对

6.最后,查看Symfony和Psr的composer.json文件,终于发现了问题所在

"require": {
    "php": ">=7.2.5",
    "psr/event-dispatcher": "^1"
},
"require": {
    "php": ">=7.2.0"
},

7.解决问题后的感想:thinkphp5.0.24要求PHP5.6,EasyChat要求PHP7.0,其他的却要求更高的。。。这是万万没想到的

 

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值