今天把公司的项目平台下载到本地运行,突然发现登录的验证码显示不出来,但是明明在公司服务器上运行的好好的,为什么就不行了呢
后面我通过审查元素找到验证码所在的php文件,单独运行显示的效果这样的,一个白色的
于是百度各种搜寻中,对于php验证码显示不全有很多的处理方式。
1.安装gd模块。
出现图像验证码显示不出来最基本的就是检查GD模块有没有安装
window环境下面只需要在php.ini文件里面找到
;extension=php_gd2.dll
去掉前面的分号,重启服务,就可以了,这个时候在php文件中打印phpinfo 可以看到GD模块已经安装完成。
于是很多小伙伴说,既然GD模块安装了那很可能就是文件编码格式的问题。
2.要把文件变为UTF-8无BOM格式
文件格式应为不带BOM的UTF-8
然而依然没有解决。
干脆就把imagecreate给打印出来,看看他到底怎么了
果不其然报错了
Warning: imagettftext(): Could not find/open font
根据这个报错信息找到了答案,查手册后发现由于GD版本更新,定义字体路径参数需要使用绝对路径。
3.对字体路径参数使用绝对路径
$font = realpath('./arial.ttf');
如果还是显示不出来,可能是有缓存。
4.清除缓存
使用ob_clean(),清除一下缓存。
这个时候就应该可以显示出来了。