Loading... # HUSTOJ常见问答 **本网站与各大浏览器长期合作,可以按 `Ctrl`+`F`搜索关键词** ## 切记 ### 玄学 遇事不慌,先重启服务器试试 因为作者太懒了,有些改动你可能需要重启服务器才能生效 **这个文档有点玄学了** ### 学习能力 如果文档里面有看不懂的词汇,可以在官方文档继续查找或者在本文章内继续查找 请学会使用deepseek ### 安全性 本文章提供的所有指令都需要在root用户的身份下运行 ### 广告 建议阅读[关于我对Hydro的感想 - 壹鲦热带鱼的小窝](https://www.fmcraft.top/index.php/archives/29.html) # 官方常见问答 [代码的那些事 | 程序员回忆录](http://www.hustoj.com/) # 更常见的常见问答 ## Q:怎么才能人性化的操作数据库? 建议安装phpmyadmin,具体方法百度一下 oj不能装在phpmyadmin ## Q:我怎么查找哪个文件在哪里 ```bash find /home/judge -name "FILE_NAME" ``` 在 `FILE_NAME`处查找你需要的文件名 ## Q:HUSTOJ可以装在哪里 情况1:web+判题建议装在服务器 情况2:web装虚拟主机 判题装服务器或者远程判题 ## Q:宝塔用户到底如何安装hustoj 先安装好宝塔+lnmp环境+docker 左侧创建数据库,数据库名和用户名必须是jol,密码随意,然后记住这些信息 在终端运行 ```bash wget http://dl.hustoj.com/install-ubuntu22.04-bt.sh bash install-ubuntu22.04-bt.sh ``` *(仅限于Ubuntu22.04)* 然后键入数据库名和密码 回车 期间可能会多次出现需要你手动按下回车的情况 我记得需要按3次 安装完后,宝塔网站创建php站点,域名可以先填ip+端口,网站目录是 `/home/judge/src/web` 创建完后,编辑站点,左侧网站目录,关闭防跨站攻击 然后左侧应用商店,搜索php,设置,禁用函数里去掉 `putenv`的禁用,然后扩展里安装 `yaml`的扩展 宝塔防火墙里放行端口,idc服务商放行端口 ## Q:网站大部分的配置文件在哪里 and 怎么让学生可以看见错误对比 and 怎么修改备案号 and 怎么修改主题 and 怎么修改css and 如何修改网站标题 and 如何开启论坛功能 and 为什么状态页面看不见管理员的提交 and 我怎么设置不允许注册or注册需要审核 and smtp怎么设置 `/include/db_info.inc.php` ## Q:如何重启判题机 ```bash sudo pkill -9 judged && sudo judged ``` ## Q:为什么我提交判题卡在编译中 - 如果修改了数据库的密码,需要修改 `db_info.inc.php`和 `judge.conf`两个文件,然后重启判题机 - `judge.conf`中如果 `OJ_USE_DOCKER=1`,则 `OJ_SHM_RUN=0` - `run0`、`run1`等文件夹是真实的目录,并非软链 - 如果 `OJ_USE_DOCKER=0`可以判题,`OJ_USE_DOCKER=1`时无法判题,请检查 `install`目录下 `Dockerfile`是否符合要求(可以问问Deepseek),然后再次运行 `docker.sh`看看结果是否正常 - 修改 `OJ_USER_DOCKER`参数,需要重启judged生效 - 刚装的系统,建议重新运行 `docker.sh` ## Q:我怎么取消当前的判题任务 适用于解决卡死的判题任务,新手的话建议先进oj,然后后台管理,左边系统管理-重判任务,人工判题编译中改判其他结果 或者给自己添加HTTP_JUDGER权限,重新登录oj,然后在判题列表中鼠标放到卡死的判题结果上面,下面改成其他结果,记得输入分数 ## Q:宝塔面板无法导入Hydro的题目咋办 PHP安装yaml扩展 ## Q:我的oj经常502咋办 从理论上讲,就是你机器配置太拉了,建议升级配置 治标不治本的方法: 重启php和mysql(具体方法deepseek) 也许治本的方法: 宝塔应用商店找到php,设置,配置修改,按照以下的设置进行设置 ```bash short_open_tag开启短标签支持 max_execution_time300最大脚本运行时间 max_input_time60最大输入时间 memory_limit 128M脚本内存限制 post_max_size50MPOST数据最大尺寸 file_uploads开启是否允许上传文件 upload_max_filesize50M允许上传文件的最大尺寸 max_fil_uploads20允许同时上传文件的最大数量 fault_socket_timeout60Socket超时时间 error_reportingE_ALL & ~E_NOT错误级别 display_errors开启是否输出详细错误信息 cgi.fix_pathinfo是否开启pathinfo date.timezonePRC时区 ``` ## Q:不小心手欠把自己的administrator权限删了咋办 and 不小心把数据库改炸了咋办 ```bash sudo su cd /home/judge/src/install echo "insert into jol.privilege values('admin','administrator','true','N');" | ./mysql.sh ``` 或者(不推荐 但是理论上可以) ```bash sudo su cd /home/judge/src/install ./mysql.sh ``` ## Q:不小心二开炸了咋办 and 怎么升级oj? 可以执行 `install`目录下的 `fixing.sh` 或者重新运行安装脚本(理论可以,但不推荐) ## Q:如何修改底部文字? `/template/syzoj/footer.php` ## Q:自己改过题目id,然后添加题目页面不显示咋办 创建一道id为1000的题目 ## Q:markdown latex渲染不正确咋办 1 检查自己浏览器 2 更新hustoj的版本 3 请确保使用的是 `<span class='md auto_select'></span>`而不是 `[md][/md]` 文本编辑器 ## Q:底部的菜单栏在哪里修改 `/template/syzoj/header.php` ## Q:我想把结果显示的英文改成类似 `AC`或 `Accpted`这种咋办 修改 `/lang/cn.php`,查找关键字修改 ## Q:如何批量给题目增加标签? 批量的话,建议直接操作sql 先 `mysql -p`登录sql服务器,密码就填 `db_info.inc.php`里头的密码 ```sql USE jol; UPDATE problem SET source = CONCAT(source, ' 标签') WHERE problem_id BETWEEN 起始编号 AND 结束编号; ``` 注意标签前面要加一个空格 ## Q:怎么删除公告 数据库中删除 ## Q:深色模式header和页面太窄了怎么办 在template的header加两个 `<br>` ## Q:我怎么给网站加logo 先将logo放在服务器上,然后编辑template的 `header.php`,在**OJ_NAME**前面插入图片,注意调整比例 ## Q:填空题到底怎么搞 [题面exam P110 - 文本题测试 - TropicalFish-OnlineJudge](https://oj.www.fmcraft.top/problem.php?id=110) 怎么添加文本题题目?先创建题目,然后最底部改成文本评测 注意题目描述要这么写 ```html <span class='md auto_select'> 题目内容,支持markdown </span> ``` 例如本题的题目描述是这么写的: ```html <span class='md auto_select'> ## 你好! ## 这是本OJ的第一道文本题! ## 你可以在题面中点击一个选项,以选择选项! ## 祝你愉快! 1. 以下属于面向对象的高级语言是()。 - C++ - 汇编语言 - C - Basic <br> </span> ``` 另外,如果想要多选,请在当前题号的前面加上多选字样 关于测试数据这么写: `data.in`:一行,有N道题,在本题,`data.in`是 `1`,注意,题号只能是数字,要有序 `data.out`:N行,每行是这样构成的:`题号 [分数] 正确答案`,例如,在本题,`data.out`是 `1 [100] A`,不要有多余内容,一行一个 `template.c`:N行,每行一个题号加一个空格,例如,在本题 `template.c`是 `1 `,注意一题的右边要有一个空格,然后再换行 `template.cc`:N行,每行一个题号加一个空格,例如,在本题 `template.cc`是 `1 `,注意一题的右边要有一个空格,然后再换行 ## Q:latex是啥 我不知道啊 and markdown是啥 我不知道啊 可以看看洛谷 [LaTeX 格式手册 | 洛谷帮助中心](https://help.luogu.com.cn/rules/academic/handbook/latex) [洛谷 Markdown 格式手册 | 洛谷帮助中心](https://help.luogu.com.cn/rules/academic/handbook/markdown) 肥肠好用 或者使用[在线LaTeX公式编辑器-编辑器](https://www.latexlive.com/) ## Q:如何指定输入输出文件 找到题目,编辑测试数据,依次设置下面两个   ## Q:怎么一键导出AC代码(远古功能) 访问 `OJ_URL/export_ac_code.php`,前提是你登录了 ## Q:比赛怎么设置oi模式? oj默认是ioi模式,设置单个比赛oi,可以在添加比赛的禁止方勾选**比赛进行中,结束后才能查看结果。** ## Q:如何快速构造测试数据 可以丢给deepseek,这样写: ```bash 你好,请为我写一个随机测试数据生成器,生成xx组测试数据,题目是这样的: 标准程序是这样的: 额外的数据点要求: 请输出python的生成代码 ``` ## Q:进不去github 下载 `watt toolkit` ## Q:为什么感觉开oj之后磁盘占用过大 最新版oj有自动备份,在 `/var/backups`下 ## Q:我怎么迁移 适用于所有方法: 压缩 `/home/judge`,导出数据库 新服务器先安装hustoj,确保能正常判题,解压judge文件夹覆盖,然后导入数据库(不需要删除) 重置数据库密码 ## Q:权限表里的记录都是什么含义? * “administrator” 管理员,除查看源码外的所有权限。 * “problem\_editor”:题目编辑者,添加和编辑题目。 * “source\_browser”:查看审核所有提交的源代码,对比可疑的相似代码。 * “contest\_creator”:组织创建比赛,编辑比赛。 * “http\_judge”:HTTP远程判题账号。 * “password\_setter”:重置普通账户密码。 * “printer”:现场赛打印员,注意该账户的school字段用于分配打印任务,如果只有一个打印区则置空。 * “balloon”:气球配送员,注意该账户的school字段用于分配气球任务,如果只有一个气球配送区则置空。 * “vip”:可以参与所有标题含有VIP字样的私有比赛。 * “problem\_start”:HTTP远程判题账户的任务起始题号。 * “problem\_end”:HTTP远程判题账户的任务结束题号。 ## Q:怎么使用题单 安装好后oj会给exam,仿照即可 ## Q:怎么卸载oj install目录下的 `uninstall.sh` ## Q:oj老是超时怎么办 加ios加速头,可以看安装好oj的faq ## Q:查重咋搞 ``` OJ_SIM_ENABLE=1 ``` 修改/home/judge/src/web/include/db\_info.inc.php,设置 ``` $OJ_SIM=true; ``` * 抄袭只对不同账号间生效,自己抄袭自己不计。拥有Source\_browser权限的账号可以看到具体数值和对比。 * 至少要50个词汇以上,才会判断相似度,过于短小的程序不会进行判断。 * 长期使用查重功能,需要占用较多磁盘空间和CPU时钟,可以考虑用下面的命令考虑定期清理: * `cd /home/judge/data` * `find -name ‘ac’ -exec rm -rf {} \\;` * **清理前注意备份,避免误操作** ## Q:导入题目失败咋办 1、先用谷歌浏览器直接打开xml文件,看是否有语法错误,如果有,用文本编辑器修订提示的行号。 2、如果超过100M,可以先用[EasyFPSViewer](https://github.com/Azure99/EasyFPSViewer/releases/download/1.3/EasyFPSViewer.v1.3.exe)拆分成多个小文件,然后再导入。 3、对于HUSTOJ,可以先压缩为zip再上传导入 4、修改/etc/php/7.2/fpm/php.ini, 提高post\_max\_size、upload\_max\_filesize 、memory\_limit、max\_execution\_time 的值。修改后执行sudo service php7.2-fpm restart生效。 ## Q:比赛添加页面,子网是什么东西 假设有机房a,有学生考试,如果机房a的学生a给机房b的学生b比赛页面,那么机房b的学生b就可以访问比赛,从而帮助他提交代码 但是,设置子网后,机房b的学生就无法进去,包括其他网段 ## Q:为什么oj主页莫名奇妙出现更新数据库 建议别管他,换个账号登录 执行mysql.sh试试 ## Q:OJ判题会得部分分怎么办 编辑 `/home/judge/etc/judge.conf`,`OJ_INTERNAL_MARK`1改0 然后重启判题机 ## Q:subtask到底是啥,怎么绑定 and 我怎么做到只要错一个测试点就全错 subtask是啥可以看看洛谷 怎么绑定? > 官方:命名规则: .in/.out 对应,[]标记分数,.标记subtask , 如 TaskA.a[20].in/out 和 TaskA.b[20].in/out 是一组subtask,共计40分。 说人话: `{备注名}.subtask名[subtask分].测试数据编号.in/out` 例如  这里,**problem**是题目备注名,**a**是subtask名,**100**是subtask分数,**1-6**是测试点编号,**.in/.out**是后缀名 ## Q:离线环境下怎么安装hustoj and 公司内网怎么安装hustoj and 无外网怎么安装hustoj 材料: 一台能用的电脑 找一个不要钱的U盘 安装hustoj的服务器 先去[http://123.158.39.181:8090/](http://123.158.39.181:8090/)下载镜像,然后下载rufus,用rufus写入镜像到不要钱的u盘 然后把u盘插入要安装hustoj服务器,百度搜索主板+启动键选择u盘启动,安装即可 ## Q:宝塔安装的hustoj, 使用hello算法乱码咋办 宝塔面板里面站点配置文件,设置伪静态 ```txt location / { try_files $uri $uri/ /index.php?$query_string; } location ~ \.php$ { fastcgi_pass unix:/tmp/php-cgi-82.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } ``` 将82设置为实际的PHP版本号,中间不要有其他符号 ## Q:如何重启整个服务 ```bash sudo systemctl restart nginx sudo systemctl restart php-fpm sudo systemctl restart mysql sudo pkill -9 judged sudo judged ``` 最后修改:2025 年 10 月 16 日 © 允许规范转载 打赏 赞赏作者 支付宝微信 赞 2 如果觉得我的文章对你有用,请随意赞赏