CentOS 下的验证码显示问题

开发环境 AND 生产环境.gif
问题:
项目部署到 CentOS 的服务器后,图片验证码请求时出现 500 错误,

日志一直是 ArrayIndexOfBoundsException:0,数组第 0 位越界,错误定位到了代码 123 行,
验证码使用 java.awt.Graphics 来生成的,在 123 行的地方调用了 java.awt.Graphics 类的 drawString 方法(方法的作用是将指定的文本绘制为图片),
实在找不出问题,便认为是 java.awt.Graphics 的问题,于是换谷歌的 Kaptcha 来生成验证码。
使用 Kaptcha 来生成图片验证码,本地环境测试没有问题,部署到服务器后也没有报错,但是验证码图片上只有干扰线,验证码文本并未绘制出来。
回过头想想使用 Graphics 来生成验证码时也是在绘制文本的时候出了问题,然后科普了一下 Kaptcha 在绘制文本时默认使用的字体是 Arial, Courier 这两种。
去 CentOS 存储字体的路径 /usr/share/fonts/ 去查看,果然没有 Arial 和 Courier 的字体,只有一个 stix 的字体目录,这样的话我们给它添加上这两种字体其中一种就可以了。
解决:
给服务器添加需要的字体即可。
1. 打开自己环境电脑上的本地目录:C:\Windows\Fonts,找到 Arial 或 Courier 字体,将他们上传到 CentOS 服务器中的 /usr/share/fonts/ 目录下,
这个目录下需要自己为字体创建一个目录,比如我要上传 Arial 的字体,需要先在 /usr/share/fonts/ 下创建一个 arial 的目录,然后将 arial 的字体文件放进去。
2. 执行以下命令将刚刚添加的字体设置缓存使其生效
[root@localhost ~]# cd /usr/share/fonts/arial
[root@localhost ~]# mkfontscale
[root@localhost ~]# mkfontdir
[root@localhost ~]# fc-cache -fv
3. 修改 bashrc文件,设置 gunplot 对 arial 的选择路径
# 先打开这个文件
vi ~/.bashrc
# 文件末尾追加这两句,第一句是我们安装的字体的路径
export GDFONTPATH=/usr/share/fonts/arial
export GNUPLOT_DEFAULT_GDFONT="arial"
CentOS 下的验证码显示问题的更多相关文章
- CentOS下date命令 - 显示和设置系统日期与时间
显示系统日期 要显示系统日期,只要输入: $ date Thu Dec 5 22:55:41 WIB 2013 格式化显示日期 日期有很多格式.如果你不喜欢默认的格式,你可以换一种格式.你可能会想&q ...
- CentOS下多种方法显示文本行号
一.创建文本文件 ..}| >test.txt cat test.txt 二.多种方法显示行号 方法一:nl命令(注意:空行不显示行号) [root@WT data]# nl test.txt ...
- linux下tomcat6无法显示图片验证码 少了图形插件
linux下tomcat6无法显示图片验证码(windows下显示正常) 原创 2015年10月20日 10:31:47 3526 linux下tomcat6无法显示图片验证码(windows下显示正 ...
- web项目部署在centos 7验证码显示不出来解决方案
今天把项目部署在centos7上,发现验证码显示不出来,看了一下tomcat日志 Exception in thread "http-nio-8080-exec-3" java.l ...
- CentOS下shell显示-bash-4.1#不显示用户名路径的解决方法
CentOS下shell显示-bash-4.1$不显示用户名路径的解决方法 问题描述: CentOS下新增一个用户,登录进去之后shell脚本的信息如下: 而不是我们经常看到的username@hos ...
- Linux CentOS下shell显示-bash-4.1$ 不显示用户名和主机名的解决方法
CentOS下新增加一个用户,登录进去会发现shell脚本信息没有显示用户名和主机名,反而显示的是-bash-4.1$,如图所示: 而不是我们经常看到的username@hostname$的组合,看起 ...
- CentOS下shell显示-bash-4.1$不显示用户名路径
Linux CentOS下shell显示-bash-4.1$不显示用户名路径的解决方法. 问题描述: CentOS下新增一个用户,登录进去之后shell脚本的信息如下: -bash-4.1$ \ -b ...
- centos 7 下图形验证码乱码
工作中遇到一个问题:同样的代码在centos 6.5下图形验证码是正常的 但是在centos 7下面是乱码 centos 6.5 的系统字体库目录 [wwwad@P2P-test2 fonts]$ p ...
- CentOS下Web服务器环境搭建LNMP一键安装包
CentOS下Web服务器环境搭建LNMP一键安装包 时间:2014-09-04 00:50来源:osyunwei.com 作者:osyunwei.com 举报 点击:3797次 最新版本:lnmp- ...
随机推荐
- ceph SSD HDD分离与openstack调用
本例子ceph L版本采用的是filestore,而不是bluestore. 一.查看class类型,只有一个hdd,.Luminous 为每个OSD添加了一个新的属性:设备类.默认情况下,OSD将根 ...
- JDK8--07:并行流与串行流
JDK8中,提供了并行流和串行流,使用parallel()和sequential()来处理,parallel()为并行流sequential()为串行流,两者可以相互转换,以最后一个为准 LongSt ...
- numpy模块&pandas模块
目录 numpy模块 pandas模块 numpy模块 import pandas as pd import numpy as np df=pd.Series(np.array(['a','b'])) ...
- 记一次服务器被植入挖矿木马cpu飙升200%解决过程
线上服务器用的是某讯云的,欢快的完美运行着Tomcat,MySQL,MongoDB,ActiveMQ等程序.突然一则噩耗从前线传来:网站不能访问了. 此项目是我负责,我以150+的手速立即打开了服务器 ...
- 【必读】前端需要懂的 APP 容器原理
App 容器,简言之,App 承载某类应用(H5/RN/Weex/小程序/Flutter ...)的运行环境,可主动干预并进行功能扩展,达到丰富能力.优化性能.提升体验的目的,如页面数据预取(pref ...
- json自定制
import json from datetime import date from datetime import datetime class JsonCustomEncoder(json.JSO ...
- spring和springmvc包扫描问题
写这篇博客之前,橘子松必须感慨下!!找了我一下午加一晚上(md),问了几个朋友也没找到.凉了啊 在搭建ssm之前,我把controller service mapper包扫描用基本包扫描 都写在a ...
- HTML5(四)Drag and Drop
HTML5 拖放(Drag 和 Drop) 拖放 拖放是一种常见的特性,即抓取对象以后拖到另一个位置. 在 HTML5 中,拖放是标准的一部分,任何元素都能够拖放. 设置元素为可拖放 首先,为了使元素 ...
- CodeForces 1293 C NEKO's Maze Game
[题目链接] [题目大意] 有一个2 ∗ n的地图,小女孩从(1,1)想移动到(2,n) 有q次询问,每次询问更改一个格子状态(是否可以通过) 只能上下左右移动而不能斜着移动,问每次操作后,是否可以移 ...
- HDFS概述及其优缺点
HDFS产生背景 随着数据量越来越大,在一个操作系统存不下所有的数据,那么就分配到更多的操作系统管理的磁盘中,但是不方便管理和维护,迫切需要一种系统来管理多台机器上的文件,这就是分布式文件管理系统.H ...