Giter Site home page Giter Site logo

mochat-cloud / mochat Goto Github PK

View Code? Open in Web Editor NEW
2.2K 30.0 471.0 7.33 MB

基于企业微信的开源SCRM应用开发框架&引擎,也是一套通用的企业私域流量管理系统!

Home Page: https://mo.chat

License: GNU General Public License v3.0

Shell 0.02% PHP 58.85% Dockerfile 0.01% HTML 0.05% JavaScript 6.21% Vue 34.62% Less 0.24%
mochat wework weixin wecom

mochat's People

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

mochat's Issues

MySQL 8.0 无法创建企业临时解决方案

修改文件 :vendor/hyperf/database/src/Schema/Grammars/MySqlGrammar.php

找到 compileColumnListing 方法,修改如下:

 /**
     * Compile the query to determine the list of columns.
     */
    public function compileColumnListing(): string
    {
        return 'select `column_key` as `column_key`, `column_name` as `column_name`, `data_type` as `data_type`, `column_comment` as `column_comment`, `extra` as `extra`, `column_type` as `column_type` from information_schema.columns where `table_schema` = ? and `table_name` = ? order by ORDINAL_POSITION';
    }

composer install

我用的环境

  • PHP 版本:7.4
  • MoChat 版本:v1.1.5
  • Swoole 版本:swoole4

问题及现象

composer install找不到库

operation 前端 执行 yarn install 出错

我用的环境

  • PHP 版本:7.4
  • MoChat 版本:v1.1.5
  • Swoole 版本:4.5

问题及现象

operation 前端 执行 yarn install 出错

gyp info spawn args '-Goutput_dir=.'
gyp info spawn args ]
gyp verb command build []
gyp verb build type Release
gyp verb architecture x64
gyp verb node dev dir /root/.node-gyp/16.15.0
gyp verb which succeeded for make /usr/bin/make
gyp info spawn make
gyp info spawn args [ 'V=1', 'BUILDTYPE=Release', '-C', 'build' ]
make: Entering directory /www/wwwroot/mochat/operation/node_modules/node-sass/build' g++ '-DNODE_GYP_MODULE_NAME=libsass' '-DUSING_UV_SHARED=1' '-DUSING_V8_SHARED=1' '-DV8_DEPRECATION_WARNINGS=1' '-DV8_DEPRECATION_WARNINGS' '-DV8_IMMINENT_DEPRECATION_WARNINGS' '-D_GLIBCXX_USE_CXX11_ABI=1' '-D_LARGEFILE_SOURCE' '-D_FILE_OFFSET_BITS=64' '-D__STDC_FORMAT_MACROS' '-DOPENSSL_NO_PINSHARED' '-DOPENSSL_THREADS' '-DLIBSASS_VERSION="3.5.5"' -I/root/.node-gyp/16.15.0/include/node -I/root/.node-gyp/16.15.0/src -I/root/.node-gyp/16.15.0/deps/openssl/config -I/root/.node-gyp/16.15.0/deps/openssl/openssl/include -I/root/.node-gyp/16.15.0/deps/uv/include -I/root/.node-gyp/16.15.0/deps/zlib -I/root/.node-gyp/16.15.0/deps/v8/include -I../src/libsass/include -fPIC -pthread -Wall -Wextra -Wno-unused-parameter -m64 -O3 -fno-omit-frame-pointer -std=gnu++14 -std=c++0x -fexceptions -frtti -MMD -MF ./Release/.deps/Release/obj.target/libsass/src/libsass/src/ast.o.d.raw -c -o Release/obj.target/libsass/src/libsass/src/ast.o ../src/libsass/src/ast.cpp g++: error: unrecognized command line option ‘-std=gnu++14’ make: *** [Release/obj.target/libsass/src/libsass/src/ast.o] Error 1 make: Leaving directory /www/wwwroot/mochat/operation/node_modules/node-sass/build'
gyp ERR! build error
gyp ERR! stack Error: make failed with exit code: 2
gyp ERR! stack at ChildProcess.onExit (/www/wwwroot/mochat/operation/node_modules/node-gyp/lib/build.js:262:23)
gyp ERR! stack at ChildProcess.emit (node:events:527:28)
gyp ERR! stack at Process.ChildProcess._handle.onexit (node:internal/child_process:291:12)
gyp ERR! System Linux 3.10.0-1160.53.1.el7.x86_64
gyp ERR! command "/www/server/nvm/versions/node/v16.15.0/bin/node" "/www/wwwroot/mochat/operation/node_modules/node-gyp/bin/node-gyp.js" "rebuild" "--verbose" "--libsass_ext=" "--libsass_cflags=" "--libsass_ldflags=" "--libsass_library="
gyp ERR! cwd /www/wwwroot/mochat/operation/node_modules/node-sass
gyp ERR! node -v v16.15.0

经常超时错误

我用的环境

  • PHP 版本:
  • MoChat 版本:
  • Swoole 版本:

问题及现象

您好,在测试的时候有个问题,就是会经常报超时错误,刷新页面也不行,但是过几分钟就正常了,想问下是配置的nginx有问题?还是后台不稳定造成的

消息存档不好用!

我用的环境

docker版本

问题及现象

我添加完了企业,并配置好企业的信息,使用消息存档功能没有任何消息,我查看源代码后发现MessageSyncDataTask的注释上写着TODO 本功能暂未启用。消息存档这个功能现在是咱不可用么?

前端部署时,提示缺少必要文件

我用的环境

  • PHP 版本:7.3.22
  • MoChat 版本:latest
  • Swoole 版本:4.6.5

问题及现象

安装配置dashboard时,执行yarn run build后,一直提示缺少必要的文件,提示信息如下:
ERROR Error: Cannot find module './public/dll/antDesignVue-manifest.json'

尝试过node16/15/14/13/10等多个版本,均如此

成员统计访问有问题

我用的环境

  • PHP 版本:7.4
  • MoChat 版本:2.0
  • Swoole 版本:4.5.9

问题及现象

访问 http://mochat.test/workEmployee/index?page=1&perPage=10 显示 500错误
报错信息如下:

// api-server\app\Service\WorkEmployeeStatisticService.php
    /**
     *  查询多条 - 根据成员ID.
     */
    public function getEmployeeStatisticIdsByEmployeeIds(array $employeeIds, array $columns = ['*'], array $options = []): array
    {
        $model = $this->model::query()
            ->select('id', Db::raw('MAX(id) as id'))
            ->whereIn('employee_id', $employeeIds);
        if (! empty($options['groupBy'])) {
            $model = $model->groupBy($options['groupBy']);
        }
        return $model->get()->toArray();
    }

// api-server\app\Logic\WorkEmployee\IndexLogic.php
   /**
     * 成员统计
     */
    protected function getEmployeeStatistics(array $employeeIds): array
    {
        $employeeStatisticsIds = $this->workEmployeeStatisticService->getEmployeeStatisticIdsByEmployeeIds($employeeIds, ['id', 'employee_id'], ['groupBy' => ['employee_id']]);
    }

最终生成的SQL语句是

id 不在 group by 的字段中,查询为报错。MySQL 版本为5.7.26.

群打卡sql错误

我用的环境

  • PHP 版本:7.4
  • MoChat 版本:1.0 最新
  • Swoole 版本:

问题及现象

{"@timestamp":"2021-08-24T14:09:32.295530+08:00","@Version":1,"host":"442901984fb7","message":"SQLSTATE[42000]: Syntax error or access violation: 1055 Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'mochat_v1.mc_room_clock_in_contact.id' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by (SQL: select id, nickname, avatar, total_day, series_day from mc_room_clock_in_contact where clock_in_id = 1 and total_day > 0 and mc_room_clock_in_contact.deleted_at is null group by union_id, total_day order by total_day desc limit 10)[1082] in /opt/www/vendor/hyperf/database/src/Connection.php","type":"mochat","channel":"sys","level":"ERROR","monolog_level":400}

前端项目 dashboard 编译失败

我用的环境

  • PHP 版本:7.4.3
  • MoChat 版本:latest
  • Swoole 版本:4.6.5
  • Nodejs 版本:14.15.3

问题及现象

dashboard 编译失败, 看起来是去 require 不存在的 json文件,./public/ 下边没有 dll 文件夹,自然也不会有 dll/antDesignVue-manifest.json, 看起了也不像是 vue 或 webpack 会自动去创建文件夹和下载对应文件。

# 报错代码位置:
...
const dll = ['antDesignVue', 'vueCropper', 'echarts', 'corejs', 'vueContainerQuery']
      dll.map(item => {
        const path = `./public/dll/${item}-manifest.json`
        config.plugins.push(new webpack.DllReferencePlugin({
          manifest: require(path)
        }))
      })
...

# 报错命令:
$ yarn run build
yarn run v1.22.10
$ vue-cli-service build
✔  Building for production...
 ERROR  Error: Cannot find module './public/dll/antDesignVue-manifest.json'
Require stack:
- /home/thomas/scp_root/mochat/dashboard/vue.config.js
- /home/thomas/scp_root/mochat/dashboard/package.json
Error: Cannot find module './public/dll/antDesignVue-manifest.json'
Require stack:
- /home/thomas/scp_root/mochat/dashboard/vue.config.js
- /home/thomas/scp_root/mochat/dashboard/package.json
    at Function.Module._resolveFilename (internal/modules/cjs/loader.js:815:15)
    at Function.Module._load (internal/modules/cjs/loader.js:667:27)
    at Module.require (internal/modules/cjs/loader.js:887:19)
    at require (internal/modules/cjs/helpers.js:74:18)
    at /home/thomas/scp_root/mochat/dashboard/vue.config.js:65:21
    at Array.map (<anonymous>)
    at configureWebpack (/home/thomas/scp_root/mochat/dashboard/vue.config.js:62:11)
    at /home/thomas/scp_root/mochat/dashboard/node_modules/@vue/cli-service/lib/Service.js:251:21
    at Array.forEach (<anonymous>)
    at Service.resolveWebpackConfig (/home/thomas/scp_root/mochat/dashboard/node_modules/@vue/cli-service/lib/Service.js:248:30)
    at PluginAPI.resolveWebpackConfig (/home/thomas/scp_root/mochat/dashboard/node_modules/@vue/cli-service/lib/PluginAPI.js:132:25)
    at module.exports (/home/thomas/scp_root/mochat/dashboard/node_modules/@vue/cli-service/lib/commands/build/resolveAppConfig.js:46:14)
    at build (/home/thomas/scp_root/mochat/dashboard/node_modules/@vue/cli-service/lib/commands/build/index.js:147:50)
    at /home/thomas/scp_root/mochat/dashboard/node_modules/@vue/cli-service/lib/commands/build/index.js:89:13
    at Service.run (/home/thomas/scp_root/mochat/dashboard/node_modules/@vue/cli-service/lib/Service.js:230:12)
    at Object.<anonymous> (/home/thomas/scp_root/mochat/dashboard/node_modules/@vue/cli-service/bin/vue-cli-service.js:36:9)
error Command failed with exit code 1.
info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command.

跨域问题

我用的环境

  • PHP 版本:7.4
  • MoChat 版本:1.1
  • Swoole 版本:4.7.1

问题及现象

服务部署好了,前端页面也弄好了,我在我本地电脑上任何浏览器访问是正常的,但是除了这台电脑以外,其他的电脑,包括手机,用浏览器访问就会报跨域错误

Access to XMLHttpRequest at 'http://api.yowub.com/dashboard/user/auth. from origin 'http://dashboard.yowub.com/' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.

报错500

我用的环境

  • PHP 版本:7.2
  • MoChat 版本:
  • Swoole 版本:4.5

问题及现象

General error: 1525 Incorrect TIMESTAMP value: ''2021-11-17'' (SQL: select count(id) as aggregate from mc_shop_code_record where corp_id = 1 and type = 1 and created_at > '2021-11-17' and mc_shop_code_record.deleted_at is null)[1082] in /opt/www/vendor/hyperf/database/src/Connection.php","type":"mochat","channel":"sys","level":"ERROR","monolog_level":400}

image
image

外部群聊机器人

问题1:

企业微信外部群聊机器人有相关第三方应用或者有开发计划吗?

问题2:

群管理支持对发广告自动踢人吗?

问题3:

dotnet core 版本的 mochat 在不在开发计划内呀?

无法获取消息存档数据

我用的环境

  • PHP 版本:7.4
  • MoChat 版本:2.0
  • Swoole 版本:swoole4.x

问题及现象

  • 安装环境根据文档使用宝塔进行安装,安装完毕后,均可以正常登录后台,接口正常,访问显示“Hello MoChat”。成员、客户、组织架构均能正常同步。
  • 问题:在mochat后台配置完消息存档,重复确认并排除文档“会话内容未拉取”中的问题不存在,且微信用户”同意了存档会话内容“。但后台依旧无法有消息存档。
    image

在api-service/runtime/logs 中

info-2021-06-28.log  wechat.log

只有这两个日志,也没有报错信息。

后台服务异常.hard错误

我用的环境

  • PHP 版本:7.4
  • MoChat 版本:最新
  • Swoole 版本:4.5

问题及现象

部署完请求接口报 后台服务异常.hard

关于 “未认证,没有token”的问题

这个问题历史问题中也都有问过,但是都没给满意的答复,就关闭了,我觉得这种行为是很草率的。这里我给大家彻底的解释一下,为什么会报 未认证,没有token 这个问题。

导致的原因:报这个问题的人大多数是未使用初始化脚本去配置,而是自己直接去改配置文件 .env
追问:那为什么没用过初始化脚本,就会报这个问题呢?

1、未通过初始化脚本初始配置项,系统没办法生成一条默认账号。这时候,我们通过简单的代码调试,就知道 mc_user表缺数据,就会去添加数据。

2、面临的第二个问题就是,密码是加密后的,这是我们追源码,也很容易知道密码是
password_hash(md5($signatureString . $this->getSecret()), PASSWORD_BCRYPT);
这么来的。这也是官方,给的原因,说你密码错了,这个那个的。

3、你发现你的密码是对的,为什么还是报呢?继续追代码你会发现,token 其实是生成了,只是调用 /role/permissionByUser 报莫名其妙的错误 未认证,没有token。这个错误极具误导性,让人以为是header中未携带token,其实好好的携带着呢。
/role/permissionByUser发现并没有进入这个方法,之前就被拦住了,报错了。那就是中间件的问题了。最终找到
mochat/api-server/app/Model/Traits/UserTrait.php 的 72 - 73行。有如下代码:
$redis = $container->get(Redis::class); $cacheData = $redis->get('mc:user.' . $id);
jwt这个组件,需要用到redis 去存储用户的信息,未连上报的错误。我想大多数的人,都是因为,并没有去连接redis也能启动,而忽略了。

初始化报错php bin/hyperf.php mc:init。 PHP Fatal error: Uncaught Symfony\Component\Console\Exception\RuntimeException: Unable to hide the response. in /www/wwwroot/mochat/api-server/vendor/symfony/console/Helper/QuestionHelper.php:434

我用的环境

  • PHP 版本:7.4
  • MoChat 版本:最新(2022.4)
  • Swoole 版本:4

问题及现象

执行如下指令时报错:php bin/hyperf.php mc:init
刚开始初始化时正常,当配置到管理员手机并回车确定时,看到提示输入管理员密码,接着就是报错信息了。

 输入redis.db [0]:
 > 

+------------+-----------+
| 属性名称   | 属性值    |
+------------+-----------+
| REDIS_HOST | 127.0.0.1 |
| REDIS_PORT | 6379      |
| REDIS_AUTH |           |
| REDIS_DB   | 0         |
+------------+-----------+
重载配置成功

 输入管理员的手机号:
 > 18888888888

 输入管理员密码:
 > PHP Fatal error:  Uncaught Symfony\Component\Console\Exception\RuntimeException: Unable to hide the response. in /www/wwwroot/mochat/api-server/vendor/symfony/console/Helper/QuestionHelper.php:434

完整报错信息如下:

 > PHP Fatal error:  Uncaught Symfony\Component\Console\Exception\RuntimeException: Unable to hide the response. in /www/wwwroot/mochat/api-server/vendor/symfony/console/Helper/QuestionHelper.php:434
Stack trace:
#0 /www/wwwroot/mochat/api-server/vendor/symfony/console/Helper/QuestionHelper.php(120): Symfony\Component\Console\Helper\QuestionHelper->getHiddenResponse()
#1 /www/wwwroot/mochat/api-server/vendor/symfony/console/Helper/QuestionHelper.php(67): Symfony\Component\Console\Helper\QuestionHelper->doAsk()
#2 /www/wwwroot/mochat/api-server/vendor/symfony/console/Style/SymfonyStyle.php(361): Symfony\Component\Console\Helper\QuestionHelper->ask()
#3 /www/wwwroot/mochat/api-server/vendor/hyperf/command/src/Command.php(182): Symfony\Component\Console\Style\SymfonyStyle->askQuestion()
#4 /www/wwwroot/mochat/api-server/runtime/container/proxy/MoChat_App_Install_Command_McInitCommand.proxy.php(203): Hyperf\Command\Command->secret()
#5 /www/wwwroot/mochat/api-server/runtime/container/proxy/MoChat_App_Install_Command_McInitCommand.pro in /www/wwwroot/mochat/api-server/vendor/symfony/console/Helper/QuestionHelper.php on line 434

Fatal error: Uncaught Symfony\Component\Console\Exception\RuntimeException: Unable to hide the response. in /www/wwwroot/mochat/api-server/vendor/symfony/console/Helper/QuestionHelper.php:434
Stack trace:
#0 /www/wwwroot/mochat/api-server/vendor/symfony/console/Helper/QuestionHelper.php(120): Symfony\Component\Console\Helper\QuestionHelper->getHiddenResponse()
#1 /www/wwwroot/mochat/api-server/vendor/symfony/console/Helper/QuestionHelper.php(67): Symfony\Component\Console\Helper\QuestionHelper->doAsk()
#2 /www/wwwroot/mochat/api-server/vendor/symfony/console/Style/SymfonyStyle.php(361): Symfony\Component\Console\Helper\QuestionHelper->ask()
#3 /www/wwwroot/mochat/api-server/vendor/hyperf/command/src/Command.php(182): Symfony\Component\Console\Style\SymfonyStyle->askQuestion()
#4 /www/wwwroot/mochat/api-server/runtime/container/proxy/MoChat_App_Install_Command_McInitCommand.proxy.php(203): Hyperf\Command\Command->secret()
#5 /www/wwwroot/mochat/api-server/runtime/container/proxy/MoChat_App_Install_Command_McInitCommand.pro in /www/wwwroot/mochat/api-server/vendor/symfony/console/Helper/QuestionHelper.php on line 434

使用docker-compose方式安装mochat时,在执行docker-composer up后 一直报redis连接失败的错误的解决方法

问题:使用docker-compose方式安装mochat时,在执行docker-composer up后 一直报redis连接失败的错误
mochat_init | sh: /tmp/wait-for: not found
backend | [ERROR] RedisException:Connection refused(0) in /opt/www/vendor/hyperf/redis/src/RedisConnection.php:246

分析:主要是/docker-compose/services/mochat_init/wait-for这个sh文件没有被linux服务器识别 导致mochat_init初始化失败。
原因是shell脚本编写时的系统跟执行脚本的系统不一致,比如在window系统编写脚本,拷贝到Linux系统执行时就会遇见此问题。原因是在windows下编辑的.sh文件的格式为dos格式,而linux只能执行格式为unix格式的脚本。因为在dos/window下按一次回车键实际上输入的是“回车(CR)”和“换行(LF)”,而Linux/unix下按一次回车键只输入“换行(LF)”,所以修改的sh文件在每行都会多了一个CR,所以Linux下运行时就会报错找不到命令。
另外就是在github上使用windows系统下载源文件中包含shell脚本文件时,解压并拷贝到Linux系统执行时,也可能发生此问题。

解决办法:
通过vi编辑器来查看文件的format格式
用vi命令打开文件vi wait-for
在vi命令模式中使用 :set ff 命令 可以看到文件的格式为
fileformat=dos
使用vi/vim修改文件format为unix
:set ff=unix
或者::set fileformat=unix
然后:wq保存退出,重新执行docker-composer up就正常了。

管理员密码修改问题

初始化时设置管理员密码如果用了符号,就无法修改了。
因为修改密码界面做了限制,只能是字母和数字
所以判断旧密码时无法通过验证

聊天侧边栏加载错误

我用的环境

  • PHP 版本:7.4.15
  • MoChat 版本:1.x
  • Swoole 版本:4.6

问题及现象

聊天侧边栏加载错误

前端提示 :{"code":100012,"msg":"资源未找到","data":[]}

后端错误代码截图如下:
屏幕快照 2021-02-25 15 47 32

无法登录 dashboard

我用的环境

  • PHP 版本:7.4.3
  • MoChat 版本:latest
  • Swoole 版本:4.6.5
  • Nodejs 版本:14.15.3

问题及现象

安装配置成功后,无法登录dashboard,提示未认证,没有token

  • api, dashboard, sidebar 都部署完毕,域名和 nginx 反向代理都按照文档设置并且能够访问。
  • php bin/hyperf.php mc:init 成功, 数据库各种表已经创建起来了
  • mc_user 没有数据,执行了文档里写的两条sql:
INSERT INTO `mc_user` (`phone`,`password`,`status`,`isSuperAdmin`) VALUES ('13412347867','$2y$10$6PedNV6SVNQNpUMjZgauvewh7wfFjbSWbh2k9yGJ9dhAIBVcL4gKm',1,1);

INSERT INTO `mc_tenant` (`server_ips`) VALUES ('["182.92.11.11"]');

1
2
3

初始化安装建议

我用的环境

  • PHP 版本:7.3.1
  • MoChat 版本:2.0
  • Swoole 版本:4.6

查询不到数据表

PHP Fatal error: Uncaught PDOException: SQLSTATE[42S02]: Base table or view not found: 1146 Table 'mochat.user' doesn't exist in vendor/hyperf/database/src/Connection.php:282

建议在初始化安装提供表前缀填写

消息存档的相关问题

我用的环境

  • PHP 版本:7.4
  • MoChat 版本:2.0
  • Swoole 版本:4.6

问题及现象

1、消息存档在下载时间比较短的音频文件转mp3的时候会失败,返回为空,不知道是我的ffmpeg问题还是什么,我转成了wav就没啥问题

2、消息存档如果有语音通话的记录,在程序获取同步的时候会因为没有对语音通话类型作处理(并未传回roomid)导致异步
[redis异步队列错误-message:] Undefined index: roomid
应该视频通话也会导致这个错误吧,望下个版本进行完善下

安装报错 it is missing from your system. Install or enable PHP's wxwork_finance_sdk extension.

我用的环境

  • PHP 版本:7.4.10
  • MoChat 版本:master
  • Swoole 版本:4.5.4

问题及现象

执行composer install

 Problem 1
    - Root composer.json requires mochat/wework-finance-sdk ^1.0 -> satisfiable by mochat/wework-finance-sdk[v1.0.0].
    - mochat/wework-finance-sdk v1.0.0 requires ext-wxwork_finance_sdk * -> it is missing from your system. Install or enable PHP's wxwork_finance_sdk extension.

初始化项目报错 php bin/hyperf.php mc:init 报错 PHP Fatal error: Uncaught Error: Class 'Swoole\Coroutine' not found in /www/wwwroot/mochat/api-server/vendor/hyperf/engine/src/Coroutine.php:60

我用的环境

  • PHP 版本:7.4
  • MoChat 版本:最新版,2022.2.15获取(git clone)
  • Swoole 版本:4

问题及现象

执行项目初始化时,报错,

php bin/hyperf.php mc:init

PHP Warning: Use of undefined constant SWOOLE_HOOK_ALL - assumed 'SWOOLE_HOOK_ALL' (this will throw an Error in a future version of PHP) in /www/wwwroot/mochat/api-server/bin/hyperf.php on line 12

Warning: Use of undefined constant SWOOLE_HOOK_ALL - assumed 'SWOOLE_HOOK_ALL' (this will throw an Error in a future version of PHP) in /www/wwwroot/mochat/api-server/bin/hyperf.php on line 12
PHP Warning: Use of undefined constant SWOOLE_HOOK_CURL - assumed 'SWOOLE_HOOK_CURL' (this will throw an Error in a future version of PHP) in /www/wwwroot/mochat/api-server/bin/hyperf.php on line 12

Warning: Use of undefined constant SWOOLE_HOOK_CURL - assumed 'SWOOLE_HOOK_CURL' (this will throw an Error in a future version of PHP) in /www/wwwroot/mochat/api-server/bin/hyperf.php on line 12

PHP Fatal error: Uncaught Error: Class 'Swoole\Coroutine' not found in /www/wwwroot/mochat/api-server/vendor/hyperf/engine/src/Coroutine.php:60
Stack trace:
#0 /www/wwwroot/mochat/api-server/vendor/hyperf/utils/src/Coroutine.php(90): Hyperf\Engine\Coroutine::id()
#1 /www/wwwroot/mochat/api-server/vendor/hyperf/utils/src/Context.php(41): Hyperf\Utils\Coroutine::inCoroutine()
#2 /www/wwwroot/mochat/api-server/vendor/hyperf/utils/src/Context.php(76): Hyperf\Utils\Context::has()
#3 /www/wwwroot/mochat/api-server/vendor/hyperf/di/src/Resolver/DepthGuard.php(59): Hyperf\Utils\Context::override()
#4 /www/wwwroot/mochat/api-server/vendor/hyperf/di/src/Resolver/DepthGuard.php(72): Hyperf\Di\Resolver\DepthGuard->increment()
#5 /www/wwwroot/mochat/api-server/vendor/hyperf/di/src/Resolver/ResolverDispatcher.php(63): Hyperf\Di\Resolver\DepthGuard->call()
#6 /www/wwwroot/mochat/api-server/vendor/hyperf/di/src/Container.php(184): Hyperf\Di\Resolver\ResolverDispatcher->resolve()
#7 /www/wwwroot/mochat/api-server/vendor/hyperf/di/src/Containe in /www/wwwroot/mochat/api-server/vendor/hyperf/engine/src/Coroutine.php on line 60

Fatal error: Uncaught Error: Class 'Swoole\Coroutine' not found in /www/wwwroot/mochat/api-server/vendor/hyperf/engine/src/Coroutine.php:60
Stack trace:
#0 /www/wwwroot/mochat/api-server/vendor/hyperf/utils/src/Coroutine.php(90): Hyperf\Engine\Coroutine::id()
#1 /www/wwwroot/mochat/api-server/vendor/hyperf/utils/src/Context.php(41): Hyperf\Utils\Coroutine::inCoroutine()
#2 /www/wwwroot/mochat/api-server/vendor/hyperf/utils/src/Context.php(76): Hyperf\Utils\Context::has()
#3 /www/wwwroot/mochat/api-server/vendor/hyperf/di/src/Resolver/DepthGuard.php(59): Hyperf\Utils\Context::override()
#4 /www/wwwroot/mochat/api-server/vendor/hyperf/di/src/Resolver/DepthGuard.php(72): Hyperf\Di\Resolver\DepthGuard->increment()
#5 /www/wwwroot/mochat/api-server/vendor/hyperf/di/src/Resolver/ResolverDispatcher.php(63): Hyperf\Di\Resolver\DepthGuard->call()
#6 /www/wwwroot/mochat/api-server/vendor/hyperf/di/src/Container.php(184): Hyperf\Di\Resolver\ResolverDispatcher->resolve()
#7 /www/wwwroot/mochat/api-server/vendor/hyperf/di/src/Containe in /www/wwwroot/mochat/api-server/vendor/hyperf/engine/src/Coroutine.php on line 60

多次检查,api-server目录下并无vendor文件夾和子文件。

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.