HUSTOJ常见问答

本网站与各大浏览器长期合作,可以按 Ctrl+F搜索关键词

切记

玄学

遇事不慌,先重启服务器试试
因为作者太懒了,有些改动你可能需要重启服务器才能生效
这个文档有点玄学了

学习能力

如果文档里面有看不懂的词汇,可以在官方文档继续查找或者在本文章内继续查找
请学会使用deepseek

安全性

本文章提供的所有指令都需要在root用户的身份下运行

广告

建议阅读关于我对Hydro的感想 - 壹鲦热带鱼的小窝

官方常见问答

代码的那些事 | 程序员回忆录

更常见的常见问答

Q:怎么才能人性化的操作数据库?

建议安装phpmyadmin,具体方法百度一下
oj不能装在phpmyadmin

Q:我怎么查找哪个文件在哪里

find /home/judge -name "FILE_NAME"

FILE_NAME处查找你需要的文件名

Q:HUSTOJ可以装在哪里

情况1:web+判题建议装在服务器
情况2:web装虚拟主机 判题装服务器或者远程判题

Q:宝塔用户到底如何安装hustoj

先安装好宝塔+lnmp环境+docker
左侧创建数据库,数据库名和用户名必须是jol,密码随意,然后记住这些信息
在终端运行

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:如何重启判题机

sudo pkill -9 judged && sudo judged

Q:为什么我提交判题卡在编译中

  • 如果修改了数据库的密码,需要修改 db_info.inc.phpjudge.conf两个文件,然后重启判题机
  • judge.conf中如果 OJ_USE_DOCKER=1,则 OJ_SHM_RUN=0
  • run0run1等文件夹是真实的目录,并非软链
  • 如果 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,设置,配置修改,按照以下的设置进行设置

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 不小心把数据库改炸了咋办

sudo su
cd /home/judge/src/install
echo "insert into jol.privilege values('admin','administrator','true','N');" | ./mysql.sh

或者(不推荐 但是理论上可以)

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:我想把结果显示的英文改成类似 ACAccpted这种咋办

修改 /lang/cn.php,查找关键字修改

Q:如何批量给题目增加标签?

批量的话,建议直接操作sql
mysql -p登录sql服务器,密码就填 db_info.inc.php里头的密码

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

怎么添加文本题题目?先创建题目,然后最底部改成文本评测

注意题目描述要这么写

<span class='md auto_select'>
题目内容,支持markdown
</span>

例如本题的题目描述是这么写的:

<span class='md auto_select'>
## 你好!
## 这是本OJ的第一道文本题!
## 你可以在题面中点击一个选项,以选择选项!
## 祝你愉快!
1. 以下属于面向对象的高级语言是()。
- C++
- 汇编语言
- C
- Basic
<br>
</span>

另外,如果想要多选,请在当前题号的前面加上多选字样

关于测试数据这么写:

data.in:一行,有N道题,在本题,data.in1,注意,题号只能是数字,要有序

data.out:N行,每行是这样构成的:题号 [分数] 正确答案,例如,在本题,data.out1 [100] A,不要有多余内容,一行一个

template.c:N行,每行一个题号加一个空格,例如,在本题 template.c1 ,注意一题的右边要有一个空格,然后再换行

template.cc:N行,每行一个题号加一个空格,例如,在本题 template.cc1 ,注意一题的右边要有一个空格,然后再换行

Q:latex是啥 我不知道啊 and markdown是啥 我不知道啊

可以看看洛谷
LaTeX 格式手册 | 洛谷帮助中心
洛谷 Markdown 格式手册 | 洛谷帮助中心
肥肠好用
或者使用在线LaTeX公式编辑器-编辑器

Q:如何指定输入输出文件

找到题目,编辑测试数据,依次设置下面两个
image.png
image.png

Q:怎么一键导出AC代码(远古功能)

访问 OJ_URL/export_ac_code.php,前提是你登录了

Q:比赛怎么设置oi模式?

oj默认是ioi模式,设置单个比赛oi,可以在添加比赛的禁止方勾选比赛进行中,结束后才能查看结果。

Q:如何快速构造测试数据

可以丢给deepseek,这样写:

你好,请为我写一个随机测试数据生成器,生成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拆分成多个小文件,然后再导入。
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.confOJ_INTERNAL_MARK1改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/下载镜像,然后下载rufus,用rufus写入镜像到不要钱的u盘
然后把u盘插入要安装hustoj服务器,百度搜索主板+启动键选择u盘启动,安装即可

Q:宝塔安装的hustoj, 使用hello算法乱码咋办

宝塔面板里面站点配置文件,设置伪静态

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:如何重启整个服务

sudo systemctl restart nginx
sudo systemctl restart php-fpm
sudo systemctl restart mysql
sudo pkill -9 judged
sudo judged
最后修改:2026 年 05 月 26 日
如果觉得我的文章对你有用,请随意赞赏