HUSTOJ常见问答
本网站与各大浏览器长期合作,可以按 Ctrl+F搜索关键词
切记
玄学
遇事不慌,先重启服务器试试
因为作者太懒了,有些改动你可能需要重启服务器才能生效
这个文档有点玄学了
学习能力
如果文档里面有看不懂的词汇,可以在官方文档继续查找或者在本文章内继续查找
请学会使用deepseek
安全性
本文章提供的所有指令都需要在root用户的身份下运行
广告
官方常见问答
更常见的常见问答
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 judgedQ:为什么我提交判题卡在编译中
- 如果修改了数据库的密码,需要修改
db_info.inc.php和judge.conf两个文件,然后重启判题机 judge.conf中如果OJ_USE_DOCKER=1,则OJ_SHM_RUN=0run0、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,设置,配置修改,按照以下的设置进行设置
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.shQ:不小心二开炸了咋办 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里头的密码
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.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 格式手册 | 洛谷帮助中心
洛谷 Markdown 格式手册 | 洛谷帮助中心
肥肠好用
或者使用在线LaTeX公式编辑器-编辑器
Q:如何指定输入输出文件
找到题目,编辑测试数据,依次设置下面两个

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/datafind -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.conf,OJ_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
此处评论已关闭