本日在在本地新建了一个虚拟主机,把以前写好的一个php小网站支配上去,由于以前用的wamp集成环境,以是没有涌现这种情形。现在溘然创造验证码竟然刷不出来了。
于是便开启了找bug之旅,在网上找了许多办法,末了终于办理了,现在分享如下:
缺点一:
涌现上面的情形,最基本的一个缺点便是你很可能在php里面忘却安装gd模块了。window环境下面只须要在php.ini文件里面找到
;extension=php_gd2.dll
把前面的分号去掉就可以了,重启apache后,你就可以在phpinfo()里面找到这个
如果是在ubuntu环境下面,你须要安装gd模块,命令是
sudo apt-get install php5-gd
安装好了往后,也可以看到上面的模块。
缺点二:
如果小伙伴经历上面的安装后,创造还是没有用,那么就可能是下面的问题了。
你的代码很可能是利用了像editpuls或者notepad++这样的文本编辑器编辑的,那么他们的默认编码格式便是有BOM的utf-8。
UTF-8 BOM又叫UTF-8 署名,实在UTF-8 的BOM对UFT-8没有浸染,是为了支持UTF-16,UTF-32才加上的BOM,BOM署名的意思便是见告编辑器当前文件采取何种编码,方便编辑器识别,但是BOM虽然在编辑器中不显示,但是会产生输出,就像多了一个空行。一样平常我用UTF-8无BOM格式,以是你须要将代码的编码格式改成无BOM格式。
缺点三:
如果大家经历上面的两个步骤创造还是不起浸染,那就要祭出杀手锏了。
利用ob_clean()了,打消一下缓存。
ob_clean这个函数的浸染便是用来丢弃输出缓冲区中的内容,如果你的有许多天生的图片类文件,那么想要访问精确,就要常常打消缓冲区。
public function create()
{
ob_clean();
$a = new verify();
session::set('captcha', strtolower($a->create(4, 15)));
view::assign(\"大众captcha\公众, $a);
view::display(\"大众captcha\公众);
exit(0);
}
把稳:大家如果利用较高的php版本,那么不能利用未定义变量,否则会报notice缺点,$new_number和$_SESSION['check_checks']在利用前必须用isset判断一下或者你用老代码的话在最开始处加上error_reporting(E_ALL & ~E_NOTICE);屏蔽掉notice缺点(不推举),以是用isset()判断一下,来确保它被定义了。不然也有可能显示不出来验证码。
以上便是php验证码图片不显示的详细内容,更多请关注其它干系文章!