拓冰建站拓冰建站
首页 / 资讯中心 / 正文

信呼OA v1.8.6实战:PHP源码私有化部署与审批流程配置指南

简介信呼协同办公OA系统v1.8.6是一套开源的企业协同办公解决方案面向需要跨平台工作与移动审批的中小企业及开发者。v1.8.6在稳定性、易用性和性能上做了优化内置工作流引擎、任务管理、日程安排、文件管理、即时通讯、公告通知、人事考勤等模块并支持Android、iOS、Windows、Mac与Web浏览器多端接入兼顾移动办公与数据加密、权限控制能按企业流程灵活二次开发。资源包共1248个文件以PHP源码、JavaScript脚本、HTML页面和CSS样式为主附带GIF、PNG图标图片与SQL数据库文件另有字体、音频、图标等辅助资源完整保留系统前后端结构目录按功能模块划分包体仅2.79MB便于快速部署和针对性代码学习。已有317人学习下载适合希望快速搭建OA环境、研究开源实现或基于其定制办公流程的技术人员。1. 信呼协同办公 OA 系统 v1.8.6能私有部署的 PHP 源码包到底适合谁先说结论信呼协同办公 OA 系统 v1.8.6 这套源码是我拆过的开源 OA 里最适合拿来改的之一。它用 PHP 写成传到自己的服务器就能跑审批、考勤、客户、日程这些协同办公的常用模块全都带。适合两类人一类是想摆脱按年付费、把数据捏在自己手里的中小团队 IT 或行政另一类是要做 OA 定制开发的 PHP 工程师拿这套源码当底子往上叠自己的业务。它解决的核心问题就一个——流程和代码你都看得见、摸得着不会被商业 OA 当成黑匣子卡住。它不适合谁呢如果你只想要一个开箱即用、售后全包的产品那没必要自己折腾源码但如果你接受“遇到问题看日志、改配置、甚至改 PHP 代码”这种玩法v1.8.6 性价比就很高了。这个版本整体结构不复杂单机部署对服务器要求也低1 核 2G 就能带得动一个小团队日常使用。2. 部署前先摸清底子技术栈、运行环境与五步安装流程2.1 技术栈与运行形态为什么说老 PHP 项目反而不挑环境信呼没有用 Laravel、ThinkPHP 这类外部框架而是自带了一套轻量的 INK 框架应用主体放在 webmain 目录入口统一在根目录 index.php。这种形态对部署是好事不依赖 Composer 拉包不需要 Redis 之类的附加组件上传源码就能安装。对做二次开发的人也是好事目录结构直观改一个功能不用翻三层框架目录。兼容性方面我实际装 v1.8.6 的经验是PHP 5.6 到 7.4 都很稳PHP 8.0 以上会有一堆 deprecation 提示个别老写法可能会直接报错生产环境建议锁 PHP 7.4。数据库用 MySQL 5.7 或者 MariaDB 10.x 都行字符集一定选 utf8mb4。PHP 扩展里 mysqli、pdo_mysql、gd、curl 这四样必须齐curl 在企业微信、短信、API 对接时会用到少了后面很难补。以下是我常用的环境组合照着配基本不会在部署阶段翻车组件推荐配置说明PHP7.4.x兼顾兼容性与安全性老代码跑得稳MySQL / MariaDB5.7 / 10.x5.5 太老8.0 也行但注意认证插件Web 服务Nginx 1.18Apache 也能跑伪静态规则不同内存1GB 以上小团队够用建议 2GBPHP 扩展mysqli, pdo_mysql, gd, curl安装前先php -m检查2.2 安装流程从源码包到后台可登录整个安装过程大概十到十五分钟最重要的是把目录权限和数据库字符集先处理好。按下面的步骤操作# 以宝塔面板为例在站点目录下释放源码 mkdir -p /www/wwwroot/xinhu cd /www/wwwroot/xinhu unzip xinhu_v1.8.6.zip # 三个目录必须可写runtime 放缓存和日志upload 放附件 # install 负责写数据库配置权限不够会卡在安装中途 chmod -R 755 . chown -R www:www /www/wwwroot/xinhu/runtime chown -R www:www /www/wwwroot/xinhu/upload chown -R www:www /www/wwwroot/xinhu/install第一步走完之后先手动建一个库注意字符集-- 字符集选 utf8mb4别用默认的 latin1 或 utf8否则后面中文全是问号 CREATE DATABASE xinhu DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;然后打开浏览器访问站点根目录信呼会自动跳转到安装引导页如果没跳转就手动访问/install/或/index.php?minstall。安装向导里会让你填数据库主机、库名、账号、密码以及设置管理员账号和密码。数据库地址建议直接填127.0.0.1不要填localhost后者在部分服务器上会走 socket 而不是 TCP 端口导致连接失败。安装完成后向导一般会提示你锁定安装目录。我的习惯是把 install 目录直接改名备份例如改成install_lock_1.8.6既能防止别人重跑安装覆盖配置又保留了以后排查问题的参考资料。2.3 安装后第一时间要调的 PHP 参数源码跑起来只是第一步OA 平时要传附件、跑定时任务、处理报表默认参数是不够用的。我一般会在 php.ini 或面板的 PHP 配置里改下面五项参数建议值作用post_max_size64M表单提交上限审批流大字段会受到影响upload_max_filesize32M附件上传大小按团队实际需求调max_execution_time300长任务脚本比如批量导出、流程清理memory_limit256M报表导出和流程引擎计算时需要内存session.gc_maxlifetime2880会话时长和后台登录超时强相关改完记得重启 PHP-FPM。这里有个容易忽略的点改了 php.ini 不重启或者只改了 php.ini 忘了 Nginx 里client_max_body_size的默认 1M 限制上传照样失败。这三个配置要一起看后面避坑章节会展开讲。3. 工作流与审批模块把报销 5000 元的流程亲手配出来3.1 流程引擎到底提供了哪几种节点信呼的审批流引擎是我常用它的核心原因它把流程拆成节点和连线节点之间可以加条件判断。v1.8.6 支持五种基础节点发起节点、审批节点、条件节点、抄送节点、结束节点。审批节点上可以指定角色、部门、具体某人也可以配置成多人会签或按顺序依次审批。条件节点是它的精髓。比如“报销金额大于 5000 走总经理”就是条件节点上写一个金额字段的判断表达式然后连到不同的下游节点。这比很多商业 OA 灵活也比那些只能做固定环节的轻量协同工具适配性更强。第一次配置的人容易犯一个错误把条件写死在“表单控件默认值”里而不是写在“流程线的分支条件”上结果不同金额走的是同一条线。3.2 实操配置一个带金额条件分支的报销审批进入后台在“审批”或“系统应用”里找到“流程管理”新建一个名为“报销审批”的流程。流程表单里先加字段报销事由单行文本、报销金额数字、费用类型下拉、附件上传。节点配置按这个顺序搭发起节点发起人选择“全体成员”控制权限在提交时校验。条件节点判断报销金额 5000走部门主管报销金额 5000走部门主管加财务加总经理。审批节点部门主管、财务、总经理分别配置办理人角色。抄送节点流程结束后抄送给发起人方便他确认结果。配置完点发布这时流程不会立刻生效还需要到“流程绑定”里给表单绑定这条流程否则用户发起审批时找不到入口。这一步也是新手最容易漏的。3.3 抄作业流程描述的 JSON 与参数说明信呼后台是用节点卡片画的但我习惯先写一版 JSON 再回填到页面这样逻辑不容易乱。下面是我常用的模板字段说明写在注释里{ name: 报销审批-金额分支, start_node: start, nodes: [ { id: start, type: start, name: 发起人填写报销单, next: [cond_amount] }, { id: cond_amount, type: condition, name: 金额条件分支, rules: [ { if: amount 5000, next: [dept_leader] }, { if: amount 5000, next: [dept_leader, finance, general_manager] } ] }, { id: dept_leader, type: approve, name: 部门主管审批, actor: dept_leader, next: [end] }, { id: finance, type: approve, name: 财务复核, actor: role_finance, next: [general_manager] }, { id: general_manager, type: approve, name: 总经理审批, actor: role_general_manager, next: [end] }, { id: end, type: end, name: 流程结束 } ] }这里的amount是表单里数字字段的标识信呼页面配置条件时要把表达式写在节点卡片的“分支条件”里。next是数组时表示这几个节点都要处理完才能往后走如果你希望它们按顺序审批就拆成多段线不要把三个人写在同一个next数组里。会签和顺序审批的配置差别就在这个地方理解了这个后面配合同审批、用车审批就都会了。节点类型标识典型场景发起节点start员工提交申请审批节点approve主管、财务、总经理逐级处理条件节点condition按金额、部门、城市字段分流抄送节点cc结束后通知发起人或相关人结束节点end流程终点4. 考勤与移动端接入从企业微信绑定到登录时长设置4.1 考勤打卡功能到底能做什么边界在哪信呼 v1.8.6 的考勤模块支持固定班制下的上下班打卡打卡方式有 GPS、Wi-Fi 和二维码三种。GPS 适合外勤Wi-Fi 适合固定办公区二维码适合访客或会议室打卡。班次按部门配置一个部门一套班次这个粒度对小团队够用。它的边界也很清楚不支持复杂的弹性工时像“每天任意 8 小时”这种规则在那个版本里做不了也不支持跨天轮班的自动调休计算。如果你团队是标准朝九晚六直接用它如果有夜班和弹性工时就得在考勤结果上再做一层人工修正或者干脆只在移动端用到它的外勤打卡能力。4.2 接入企业微信或公众号的关键参数移动端是 v1.8.6 比较实用的部分在手机 H5 里就能发起审批和打卡。接入企业微信时后台的“系统”→“企业微信”配置页需要填一组参数我通常把这组参数整理成对照表指导现场配置参数从哪里拿填到哪里CorpID企业微信后台“我的企业”底部信呼企业微信配置的 CorpIDAgentId自建应用的“应用主页”上方信呼配置的应用 AgentIdSecret自建应用的“Secret”入口信呼配置的 SecretToken / EncodingAESKey信呼配置页随机生成后回填企业微信后台“接收消息”设置可信域名你的服务器 HTTPS 域名企业微信自建应用的可信域名配置前确保服务器能公网访问微信侧要求回调地址必须是 HTTPS 域名IP 不行自签名证书也经常被判无效。我踩过最常见的坑填了 Secret 但没把可信域名校验文件放到站点根目录结果权限校验不通过企业微信应用拉不起用户信息。4.3 登录超时时长信呼里的两层设置泛微那类 OA 系统的登录时长一般是在系统参数里填一个数就能改信呼 v1.8.6 的逻辑不太一样它有两层会话控制。第一层是 PHP 的 session 生命周期第二层是信呼自己维护的登录 token 有效期。只改其中一个是玄学用户照样会在操作中途被弹回登录页。先改 php.ini 里的会话时长单位是秒; php.ini 中控制 PHP session 有效期 ; 2880 秒 48 分钟如果团队习惯长时间挂着改成 144004 小时 session.gc_maxlifetime 2880然后回到信呼后台在“系统设置”→“安全与登录”里找“会话超时时间”或“登录超时”配置单位通常也是秒或分钟。我一般会把两层设成同一个值比如后台设置 120 分钟php.ini 就写 7200两者保持一致。还有个容易忽略的地方是移动端 token。手机端登录后拿到的 token 有时单独配置过期时间跟后台 session 不是一回事。你要是发现电脑端没问题、手机端老掉线优先查这个参数。改完记得重启 PHP-FPM并让相关员工退出重登一次旧会话才会按新配置重新生效。5. 避坑排查信呼 v1.8.6 部署使用中的五个高频问题5.1 安装提交时提示“无法连接数据库”现象安装页环境检测全绿填好库名、账号、密码点提交马上报错提示连不上 MySQL。原因最常见是 PHP 的 mysqli 扩展没装或者没启用其次是数据库地址填了localhost而 MySQL 走的是 Unix socketPHP-FPM 访问不到第三种是云数据库的访问白名单没加上服务器 IP。解决先跑php -m | grep -i mysqli没有输出就是扩展问题到 PHP 设置里装上 mysqli 再重启。数据库地址一律填127.0.0.1别填 localhost。云 RDS 的话去控制台白名单里加当前服务器公网 IP端口也要确认是 3306。5.2 安装完成打开首页白屏或 500现象安装向导走完了管理员账号也建了访问首页却白屏或直接返回 500 错误。原因绝大多数是 runtime 目录没有写权限框架写入缓存和日志文件时失败少数是 install 目录没有锁系统反复进入安装流程导致配置被覆盖。解决先给 runtime 加权限chmod -R 777 /www/wwwroot/xinhu/runtime chmod -R 777 /www/wwwroot/xinhu/upload然后把 install 目录改名或删除避免再触发安装。之后到runtime/log下翻最新日志看是不是还有别的报错比如 PHP 版本不兼容某个函数。5.3 后台中文显示乱码或方块现象系统能登录但菜单、流程名、用户姓名全变成乱码或者显示成“”。原因建库时字符集选错了。MySQL 默认可能是 latin1 或 utf8信呼连接时用的是 utf8mb4两边一错位就乱。解决重建数据库建库时明确指定字符集CREATE DATABASE xinhu DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;如果正式数据已经进去了不想重建可以挨张表转字符集但耗时长且容易漏我更建议测试阶段直接重建别跟自己过不去。另有一个隐藏点数据库连接配置文件里的字符集参数也要是 utf8mb4有的老包写死 utf8需要手动改一下。5.4 上传附件提示超过大小限制或直接失败现象传几张照片或一个 Word 文档没事传大压缩包或高清视频就提示文件过大或页面报 502。原因这是三层限制叠加的结果。PHP 的post_max_size、upload_max_filesize限制请求体和附件大小Nginx 的client_max_body_size默认只有 1M直接卡在最前面信呼后台附件配置里也可能有单独的上限。解决三处一起调只改一个没用。PHP 设置里把upload_max_filesize改成 64M、post_max_size改 80Mpost 要比 upload 大一点Nginx 站点配置里加client_max_body_size 80m;改完重启 PHP-FPM 和 Nginx。信呼后台“系统设置”里的附件大小限制也要同步调成 64M保证前端校验和实际接收范围一致。5.5 定时任务和消息提醒不触发现象审批流程能走但任务提醒、超时催办、日报汇总这类功能不干活第二天登录一看全都没跑。原因信呼的定时任务依赖系统 cron 或者外部访问触发不是装完就自带一个调度器在跑。服务器上没人配置计划任务它就永远不会执行。解决把信呼的计划任务地址加到系统的 crontab 里。常见做法是这样crontab -e # 每五分钟执行一次定时任务注意路径换成你实际的站点目录 */5 * * * * php /www/wwwroot/xinhu/index.php cron /dev/null 21配完等一个周期看 runtime 日志里有没有 cron 相关记录。如果 PHP 命令行和你 Web 用的是不同版本比如 CLI 是 PHP 8.0、Web 是 PHP 7.4定时任务脚本可能因为语法兼容问题跑不起来这也是一个值得检查的隐蔽差异。6. 进阶技巧打开调试模式读日志改一版自己的审批通知6.1 打开调试开关页面直接看 SQL信呼的调试开关在入口或应用配置里平时默认关闭打开之后页面底部会显示本次请求的 SQL 语句和执行时间。我排错时的习惯是先打开它复现一遍问题把报错信息记下来再关掉。不要留着线上开否则所有员工都能看到 SQL既不安全也影响体验。// index.php 或应用配置里的调试开关 // 1 为开启调试模式页面底部会显示 SQL 和报错0 为关闭 define(DEBUG, 1);开了 debug 之后常见的流程不跳转、部门人员拉不对这类问题基本都能从 SQL 里看出关联表查得对不对。配合 runtime 目录下的日志文件能定位大部分配置问题省去到处翻页面的时间。6.2 自定义审批通知消息模板信呼内置通知模板的变量一般是{apply_name}、{process_name}、{url}这些。在后台“消息模板”里找到对应流程的通知文案改成更明确的提醒消息里直接告诉处理人该干什么【审批提醒】{apply_name} 提交了{process_name}当前流转到你这里请尽快处理。点击进入{url}改完模板后建议自己发起一笔报销单走完整条流程确认通知文本里的变量替换成功。别只看预览预览有时候不渲染变量实际推送才生效。这套 v1.8.6 源码只要把环境和权限理顺后面跑生产其实很稳。我第一次部署时卡在 mysqli 扩展上浪费了大半天从那以后每次装机都先跑一遍php -m检查扩展、写好感 SQL、给完目录权限再开安装页之后就再没在大环节上翻过车。希望帮到你。本文还有配套的精品资源点击获取
分享:

看完干货,该让你的企业上线了

免费需求沟通 · 48 小时内出具建站方案 · 河南本地可上门