上一篇博客我们已经基本完成了部署工作,目前发现了验证码出现 500 错误,分析其代码,我们可以看到验证码使用的是 System.Drawing 命名空间下的类库, GDI+ 位图,这个在肯定是平台相关的,所以我们可以搜索 GDI+mono 来看有无解决方案。
通过搜索引擎,我们可以找到通过安装 GDI + 兼容 API 的库 Libgdiplus 可以实现 GDI + 功能。
安装方法
- cd /usr/local/src/
- #通过访问http://download.mono-project.com/sources/libgdiplus/获取libgdiplus最新的版本
- wget http://download.mono-project.com/sources/libgdiplus/libgdiplus-4.2.tar.gz
- #解压缩
- tar -zxvf libgdiplus-4.2.tar.gz
- cd libgdiplus-4.2
- #注意可能会提示缺少gcc或其他的组件,安装后重新执行即可
- ./configure --prefix=/usr
- make
- make install
重启 Jexus 服务,验证码可以显示了
仔细观察,和 windows 下验证码对比可以发现验证码字母显示不全,通过分析代码可以看到
- //字体列表,用于验证码
- string[] font = { "Times New Roman", "Verdana", "Arial", "Gungsuh", "Impact" };
验证码使用了以上字体,而 Linux 中未安装这些字体,所以我们需要安装字体,可参考 https://www.javawind.net/p130 安装字体,最后重启 Linux,验证码问题解决!
来源: http://www.bubuko.com/infodetail-2442484.html