# IM即时聊天-PHP开源
**Repository Path**: raingad/im-instant-chat
## Basic Information
- **Project Name**: IM即时聊天-PHP开源
- **Description**: 即时通信聊天应用Raingad-IM后端代码,需要前后端配合使用,可以为企业快速构建内部聊天应用、团队私密聊天,也可以作为社区聊天。支持文本、文件、图片、语音、视频等消息格式,还支持点对点音视频聊天,支持web端、桌面端和uniapp,uniapp可以打包成小程序、h5、APP。
- **Primary Language**: PHP
- **License**: Apache-2.0
- **Default Branch**: master
- **Homepage**: https://im.raingad.com
- **GVP Project**: No
## Statistics
- **Stars**: 1248
- **Forks**: 288
- **Created**: 2021-04-24
- **Last Updated**: 2026-09-22
## Categories & Tags
**Categories**: im
**Tags**: 即时通讯, 即时聊天, IM, 音视频通话, 社交媒体
## README
简体中文 | [English](./README.en.md)
# Raingad-IM 即时聊天
> 一款开源的即时通信系统,前后端配合使用,主要用于学习交流,为大家提供即时通讯的开发思路。许多功能需自行开发,初衷是快速搭建企业内部通讯、内网交流与社区交流系统。
本仓库为 **后端源码(已编译前端)**,内置安装向导与后台管理,可独立完成部署。
---
## 高级版功能预告
> 功能更强大的 **高级版** 即将上线,以下重磅能力正在路上,敬请期待,**高级版目前仅面向企业用户**。想抢先体验或了解详情,欢迎[加入交流群](#交流群)联系作者,高级版已于 **2026 年 9 月 10 日** 上线。
| 功能 | 简介 |
| --- | --- |
| **钱包** | 内置钱包账户,支持余额管理与资金收付等场景 |
| **朋友圈** | 类微信朋友圈的动态发布、浏览与互动 |
| **投诉管理** | 后台受理并处理用户投诉,规范社区秩序 |
| **版本管理** | 客户端版本的发布、更新与升级管理 |
| **消息合并转发** | 将多条聊天记录合并为一条,一键转发至其他会话 |
| **消息定向推送** | 面向指定用户或群体精准推送消息通知 |
---
## 相关链接
| 类型 | 链接 | 备注 |
| --- | --- | --- |
| 技术分享站(官网) | https://www.shooyu.cn | 书瑜网 |
| 前端源码(含后台管理) | 为方便维护已和后端放到一起,在本项目im-web目录下 | 仅维护后台管理 |
| 后端源码(已编译前端) | https://gitee.com/raingad/im-instant-chat | 本仓库 |
| Web 端演示 | http://im.raingad.com/index.html | |
| 移动端 H5 演示 | http://im.raingad.com/h5 | 需付费获取 |
| 桌面端 / 安卓端 | 请进前端演示页下载 | 需付费获取 |
---
## 体验账号
| 账号 | 密码 | 说明 |
| --- | --- | --- |
| `13800000002` | `123456` | 尾号 2、3、4 …… 18、19、20 密码均相同 |
| `13800000020` | `123456` | |
---
## 功能特性
**消息与会话**
- 支持单聊和群聊,可发送表情、图片、语音、视频和文件消息
- 单聊支持消息已读 / 未读状态显示、在线状态显示
- 支持置顶联系人、消息免打扰
- 支持新消息声音提醒、浏览器通知
- 支持文件、图片和绝大部分媒体文件在线预览
**群组管理**
- 群聊创建、删除与群成员管理
- 群公告、群禁言、@群成员
- 支持管理员撤回群成员消息、限制群成员互加好友
**音视频通话**
- 支持一对一音视频通话(已打通 Web 端和移动端,小程序不支持)
**多端与模式**
- 支持移动端(由 uniapp 开发,可打包 H5、APP 和小程序)
- APP 支持单聊消息在线、离线推送(需自行申请 unipush 服务)
- 全新支持企业模式和社区模式,社区模式支持注册、添加好友功能
**后台与部署**
- 支持后台管理,包括用户管理、群组管理、系统设置等
- 支持集群化部署,需根据实际情况自行调整
---
## 软件架构
| 端 | 技术栈 | 获取方式 |
| --- | --- | --- |
| 后端 | `ThinkPHP6 + Workerman + Redis` | 本仓库 |
| 前端 | `Vue2 + Lemon-IMUI + Element-UI` | [开源仓库](https://gitee.com/raingad/im-chat-front),仅更新后台管理,体验完整功能需购买桌面端 |
| 桌面端 | `Vue2 + Lemon-IMUI + Element-UI + Electron` | 联系作者,捐赠获取 |
| 移动端 | `uniapp for Vue3 + Pinia` | 联系作者,捐赠获取 |
---
## 环境要求
**服务器最低配置:2 核 2G。** 推荐使用宝塔面板安装 LNMP 架构,建议以 Nginx 作为 Web 服务器,不建议使用 Apache。
**服务端环境**
| 环境 | 版本要求 | 推荐版本 | 备注 |
| --- | --- | --- | --- |
| Linux | >= 7.0 | 7.9 | 更低版本未做测试 |
| Nginx | >= 1.17 | 最新版 | |
| PHP | >= 7.1 | 7.3 | 不兼容 PHP 8 |
| MySQL | >= 5.7 | 5.7 | 必须 5.7 及以上 |
| Redis | >= 5.0 | 7.0 | |
**PHP 配置要求**
以下内容非常重要!如果安装或运行出错,请重新检查是否已满足全部条件。
1. PHP 需安装扩展:`redis`、`fileinfo`
2. PHP 需取消禁用以下函数:
```
shell_exec chown exec putenv proc_open
pcntl_exec pcntl_alarm pcntl_fork pcntl_waitpid
pcntl_wait pcntl_signal pcntl_signal_dispatch
```
以上内容非常重要!如果安装或运行出错,请重新检查是否已满足全部条件。
---
## 安装部署
由于即时通讯的特殊性,严禁将源码用于木马、病毒、色情、赌博、诈骗等违反国家法律法规的行业,以及从事违法犯罪活动。如发现有使用本软件进行非法活动,将向有关部门举报并协助相关行政执法机关清查!
> 本教程主要针对**服务端**安装,请认真仔细按步骤操作,不要自作主张。各端的开发与发布请结合对应项目根目录下的 `README.md`。
> 安装需要一定的 PHP 经验和服务器运维经验,如不具备,可[加入交流群](#交流群)联系作者,作者提供付费部署服务。
### 源码下载
**下载发行版**:请在 Gitee 项目主页右侧 [发行版链接(戳我下载)](https://gitee.com/raingad/im-instant-chat/releases) 中下载最新发布的完整源码,上传到自己的服务器。
### 安装步骤
1. 将代码上传至服务器,整个目录归属 `www` 用户并赋予 `755` 权限;创建网站,将**运行目录**指向项目根目录下的 `public` 目录(运行目录必须是 `public`)。
2. 设置伪静态和反向代理。以下仅为 Nginx 配置,Apache 请自行转换。**直接复制下面全部代码到伪静态配置中即可**:
```nginx
# 伪静态配置
location ~* (runtime|application)/{
return 403;
}
location / {
if (!-e $request_filename){
rewrite ^(.*)$ /index.php?s=$1 last; break;
}
}
# 反向代理配置,如果修改过端口,需替换下方的 8282 端口
location /wss
{
proxy_pass http://127.0.0.1:8282;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "Upgrade";
proxy_set_header X-Real-IP $remote_addr;
}
```
3. 若需使用音视频通话、语音消息等服务,还需配置证书开启 HTTPS(可使用免费的 `Let's Encrypt` 证书)。若不需要这些服务,可直接用 HTTP 协议和 IP 访问,但功能会受限。
4. 访问你的 IP 或域名即可进入自定义安装向导。如访问出错,说明准备工作未按要求完成,请回头检查。
5. 部署完成后,管理员账号密码为 `administrator` / `123456`,管理入口在聊天界面左下角。
6. 安装成功后尚无法实时接收消息,请继续参考下一章 [启动消息推送服务](#启动消息推送服务)。
### 手动安装(安装向导失败时)
1. 将 `public/sql/database.sql` 导入自己的数据库。
2. 进入项目根目录,将 `example.env` 复制/重命名为 `.env`,并修改数据库等相应参数,**请仔细阅读 env 中的配置说明**。
3. 在 `/public/unpackage` 目录中新增一个空白的 `install.lock` 文件即可。
> PS:如需开启聊天文件存入 OSS,请在后台进行配置;配置后不要再修改环境配置文件。
---
## 启动消息推送服务
聊天软件需要用到 WebSocket,因此需启动 Workerman。系统已内置相应服务,可在**后台管理首页**(管理员登录后从左下角进入)一键运行服务。若后台启动不成功,请按以下内容排查调试。
### 启动失败排查
1. **重复启动冲突**:你可能在终端启动了 `php think worker:gateway start` 或 `php start.php start`,导致消息推送重复启动冲突。请在终端执行 `killall -9 php` 或重启服务器,再回到后台重新启动系统服务。
2. **PHP 版本不一致**:终端执行 `php -v` 查看版本号是否与建站时选定的 PHP 版本一致。若不一致,需将网站版本改为默认 PHP 版本,并为其安装对应扩展、取消禁用函数。
3. **目录权限不足**:重新将所有目录设置为 `www` 用户、`755` 权限后再次重试。
### 命令行调试
1. 进入项目根目录运行 `php think worker:gateway start` 即可启动消息服务;若失败,请回看 [环境要求](#环境要求)。由于 Workerman 在 Windows 下限制较多,请舍弃 Windows 环境。若运行无报错,请终止该命令(或执行 `php think worker:gateway stop`),确认调试无误后再到管理后台启动消息推送服务。
2. 消息服务需放行 `8282` 端口;如需修改,请调整环境配置文件中 `WORKER` 板块的相应参数。
3. 系统直接以域名作为 WebSocket 服务地址,因此需在网站 Nginx 中配置代理并监听 `8282` 端口(代理参数已在上方伪静态中给出)。
4. 更多 Workerman 用法,请查阅 [Workerman 官网](https://www.workerman.net/)。
---
## 目录结构
```
im-instant-chat
├── app # 应用目录(ThinkPHP 多应用模式)
│ ├── index # 主应用:IM 聊天接口
│ ├── manage # 后台管理
│ ├── worker # Workerman 消息服务(Events、command)
│ ├── enterprise # 企业模式
│ ├── common # 公共模块
│ ├── job # 队列任务
│ └── lang # 语言包
├── config # 配置文件(database、redis、gateway、jwt、sms、version 等)
├── extend # 扩展类库(ip、mail、task、utils、Hashids 等)
├── public # Web 运行目录(入口 index.php、静态资源、sql 安装包)
│ └── sql # 数据库脚本(database.sql 及升级脚本)
├── route # 路由定义
├── runtime # 运行时缓存目录(需可写)
├── stress_test # 压测脚本(HTTP / WebSocket)
├── vendor # Composer 依赖
├── view # 视图模板
├── example.env # 环境配置示例(复制为 .env 使用)
├── start.php # Workerman 启动入口
├── think # ThinkPHP 命令行入口
└── composer.json
```
---
## 最新更新
> 完整更新记录请查看仓库右侧「发行版」更新日志。
**v6.4.0**(2026 年 7 月 1 日)
1. 重构移动端 @成员功能,支持点击 @成员模块查看用户详情
2. 全新表情包上线,可快速使用最近使用过的表情
3. 服务端支持集群化部署,大幅提升并发能力
4. 服务端提供压测脚本,可自行压测
5. 桌面端新增探索功能,与移动端保持同步
6. 移动端和桌面端均支持 Web 应用开发以扩展系统功能
7. 优化文本消息复制逻辑
8. 优化移动端首页展示效果
9. 修复若干 bug
---
## 视频教程
[哟,原来有视频教程!!!(无声)](https://files.raingad.com/static/video/jiaocheng.mp4)
---
## 安装服务
作者提供本系统的安装服务,包括后端和前端部署到线上,保证项目完美运行。
- **费用**:200 元 / 次
- **赠送**:详细的安装教程及接口文档
如有需要,可进群联系作者。
---
## 交流群
请先认真阅读本文档,如有问题可留言;有购买移动端需求可加入交流群。
> ⚠️ 仅限**遇到问题**或**有购买移动端需求**时申请加入(长时间不活跃者将被定期清理)。加群前请先点 Star,否则不予通过。
### 企业微信交流群(推荐)
请扫描下方二维码加入企业微信交流群:

### QQ 交流群(逐步取消中)
> QQ 交流群将逐步取消,请优先加入上方企业微信群。
[QQ 交流群:1031495465](https://qm.qq.com/q/RgHdvLGiMk)
---
## 免责声明
### 1. 基本声明
本软件作为开源项目提供,在法律允许的最大范围内,开发者不对软件的功能性、安全性或适用性作出任何形式的保证,无论是明示的还是暗示的。
### 2. 使用风险声明
2.1 本软件按“现状”提供,使用者需自行承担使用本软件的全部风险。
2.2 开发者不对软件的运行可靠性、适用性或与特定需求的兼容性提供任何保证。
2.3 使用者应在充分评估风险的基础上决定是否使用本软件。
### 3. 责任限制与豁免
在任何情况下,开发者及其关联方均不对因使用或无法使用本软件而导致的任何损失或损害承担责任,包括但不限于:
- 数据丢失或泄露
- 利润损失
- 系统中断
- 商业机会损失
- 其他直接、间接或衍生性损失
### 4. 用户义务与责任
4.1 使用者应确保其对本软件的使用符合所有适用的法律法规要求。
4.2 对本软件进行修改、分发或二次开发的使用者,需自行承担由此产生的全部责任,包括但不限于:
- 法律风险
- 知识产权风险
- 安全风险
- 数据保护责任
### 5. 开发者权利
5.1 开发者保留对本软件进行更新、修改、调整或停止维护的权利。
5.2 开发者可能在不事先通知的情况下修改本软件或相关服务。
5.3 开发者保留对本免责声明进行修改的权利。
### 6. 其他条款
6.1 本免责声明的任何部分被认定为无效或不可执行时,其余部分仍然有效。
6.2 本免责声明的最终解释权归开发者所有。