TCExam实战:从零跑起来到上线的开源在线考试系统
TCExam实战:从零跑起来到上线的开源在线考试系统
【免费下载链接】tcexamTCExam is a CBA (Computer-Based Assessment) system (e-exam, CBT - Computer Based Testing) for universities, schools and companies, that enables educators and trainers to author, schedule, deliver, and report on surveys, quizzes, tests and exams.项目地址: https://gitcode.com/gh_mirrors/tc/tcexam
TCExam 是一款开源的计算机化评估(CBA)系统,面向高校、学校和企业,覆盖出题、排期、施考、成绩报告全流程。它的定位很明确:把纸质考卷和临时拼凑的表格,换成一个浏览器里就能跑、客观题自动批改的考试服务。
谁适合用它,谁可以先绕开
| 适合你的场景 | 建议先绕开的场景 |
|---|---|
| 客观题占比高:单选、多选、判断、填空、简答评分规则可预设 | 纯主观论述、需要教师逐份人工批阅的卷 |
| 学校、培训机构、企业内部定期考核与认证考试 | 需要原生 App 或小程序深度集成的产品形态 |
| 要自动评分、批量导入考生、导出成绩做统计 | 团队里没人能维护一台 PHP 服务器 |
架构上它把三个部分拆在独立目录:管理员后台在admin/,考生前端在public/,公共代码在shared/。后台、前台各自有独立的 Web 入口,部署时按目录分别控制访问,这一点直接影响你后面的权限配置。
三条部署路径,容器优先
环境要求(精确版本)
- PHP 8.2 及以上(官方在 8.2 / 8.3 / 8.4 上测试),需扩展:
mysqli或pgsql、gd、intl、bcmath、mbstring、zip、curl、xml、openssl、posix;用 Oracle 另需oci8 - 数据库:MySQL/MariaDB、PostgreSQL 或 Oracle 三选一
- Web 服务器:推荐 Apache + mod_php(项目自带
.htaccess访问控制规则,其他服务器要手动复现) - Composer 必装——PDF 引擎、邮件库、CAS 库都靠它拉取,不装起不来
- 可选能力:公式渲染要 LaTeX + ImageMagick;OMR 扫描卷导入要
zbarimg
路径一:容器(试用、验证功能)
git clone https://gitcode.com/gh_mirrors/tc/tcexam cd tcexam docker compose up --build起来后直接打开http://localhost:8080/。入口脚本会用docker-compose.yml里的数据库配置(内置 MariaDB 11)自动跑一遍非交互安装,不需要浏览器向导;配置挂在命名卷里,down再up实例还在。默认账号admin/1234,首次登录就改掉。
路径二:裸机或云服务器(正式部署)
composer install make lang第一条是启动硬前提(顺带生成 PDF 字体),第二条预生成翻译缓存,省得首用临时构建。然后三步:
- 把 Web 站点根目录指向项目目录
- 让
cache/、admin/backup/以及admin/config/、public/config/、shared/config/的父目录可被 Web 用户写入(安装器要往里写配置文件) - 打开
http://your-domain/install/install.php,填数据库类型、主机、端口、用户名和密码(密码不能为空),按向导完成
路径三:本地开发
走路径二的前两步,数据库用本地已有的 MySQL 或 PostgreSQL,向导里 db host 填localhost即可。装完后把站点目录换成本地 PHP 8.2+ 的 docroot,行为与生产一致。
高频功能走查:从建题到出成绩
建题库与组卷
入口在后台(/admin/code/登录)的"问题"和"考试"两个菜单。先在题目编辑里按科目分组建题,设题型、答案和分值;再到考试编辑里建考试、抽题、设时限和访问权限。得到一份可发布的考试,考生从 public 侧入口作答。
考生名单与分组
入口是后台"用户"菜单。用 CSV 导入一次性灌入名单,再用分组管理把考生归类。得到按组划分的考生池,后面给考试分配权限按组来,不用逐个勾人。
施考与实时监控
入口两处:考生在public/code/tce_test_execute.php页面作答;考试进行中管理员打开 在线用户。得到一份实时在线清单,谁在考、剩余多少时间一目了然,异常断线能立刻发现。
评分、报告与导出
客观题交卷即自动评分,不用人工过一遍。考生在public/code/tce_test_results.php查个人成绩;管理员侧用 PDF 报告 出正式成绩单,用 XML 导出 拿结构化数据灌进教务系统。得到的是可直接归档和二次加工的结果。
备份
入口是后台的备份模块。题目、考试、用户数据可整体备份,恢复时原路导回。
进阶配置:SMTP、单点登录与报告
邮件通知
成绩邮件走 SMTP。把shared/config.default/tce_email_config.php拷到shared/config/后改这几项,其余保持默认:
$emailcfg['Mailer'] = 'smtp'; $emailcfg['Host'] = 'smtp.your-email.com'; $emailcfg['Port'] = 465; $emailcfg['SMTPAuth'] = true; $emailcfg['SMTPSecure'] = 'ssl';补上Username/Password即可,之后在后台"Email results"页按考生发成绩邮件。
单点登录
单位有 CAS 的话,改 tce_cas.php:把K_CAS_ENABLED设为true,填服务端地址。验证通过的用户会自动复制进 TCExam 数据库。LDAP 走同目录下的tce_ldap.php,思路相同。
PDF 报告与公式
PDF 引擎由composer install拉取,字体自动就位;换字体后跑一次make fonts重新生成。题目里带 LaTeX 公式的话,服务器上装好 LaTeX 和 ImageMagick,在shared/config/tce_latex.php里对齐可执行文件路径,细节看 doc/LATEX.md。
排障手记:四个高频故障
| 现象 | 排查 | 处置 |
|---|---|---|
| 部署后起不来、提示类不存在 | 多半没跑composer install | 执行该命令,确认vendor/目录生成 |
| 安装向导连不上数据库 | 凭据、端口、防火墙逐项核对 | 确认用户名密码正确(密码非空)、用户有建库建表权限,安装器自己建表 |
| 题目里的公式显示成源码 | LaTeX / ImageMagick 没装或路径不对 | 装好两个组件,对照tce_latex.php里的路径和实际二进制位置 |
| 考试高峰页面慢 | PHP 内存和缓存 | 调高memory_limit,启用 opcache,再查数据库连接 |
上线清单
- 整个
install/目录删掉——生产环境向导不能可访问 - 删掉默认
admin/1234账号,新建一个 level-10 管理员 - 权限收口:文件 644、目录 755;
cache/和admin/backup/保留给 Web 用户可写 - 备份双保险:后台"Backup"定期导出 + 数据库
mysqldump定时任务,留一份异地副本 - 开启 opcache,按考试规模调
memory_limit - 盯官方安全公告,有更新就跟上
收尾
TCExam 的能力边界比较清楚:题库、考试、报告这条主线走通后,它基本是个稳定的托管服务,剩下的维护量集中在 PHP 环境和数据库上。上线前把清单里第 1、2 两条做扎实——删安装目录、换掉默认管理员——这两处是后续安全事件最常见的大本营。
【免费下载链接】tcexamTCExam is a CBA (Computer-Based Assessment) system (e-exam, CBT - Computer Based Testing) for universities, schools and companies, that enables educators and trainers to author, schedule, deliver, and report on surveys, quizzes, tests and exams.项目地址: https://gitcode.com/gh_mirrors/tc/tcexam
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
