解决PHP生成验证码时“图像因其本身有错无法显示”的错误

前段时间在iis7服务器中部署用php做的网站时,发现验证码显示不出来,报500错误!可是我在本地还能好好地显示,百思不得其解,于是做了个测试,打印了一下phpinfo(),发现竟然没有出现gd库信息!!!于是果断打开php.ini,查找了extension=php_gd2.dll,发现我gd库已经开了(把extension=php_gd2.dll前面的 ; 去掉),这就奇怪了,是不是我的扩展模板文件夹中本来就没有这个模块,于是又跑到ext文件夹中找php_gd2.dll,发现确实有存在啊!!!于是找了度娘,各种测试,其中有人说可能是php_gd2.dll版本与电脑系统不兼容,建议换一个版本的php_gd2.dll。于是我看了服务器的系统信息,window 64位,于是又重新下载了个win x64位的php安装包(下载地址),然后找到php_gd2.dll,直接替换掉了原来版本的php_gd2.dll,然后再一次打印phpinfo()时,gd库信息出现了!!!激动的心颤抖的手,赶紧去试一下网站页面的验证码出来了没,一打开,tm又显示失败!!!打开firebug看了一下是404错误!说明服务器那边的配置已经没问题了,可是为什么是报404问题呢,索性查看了request请求头信息和response响应头信息,发现请求文件的格式是png(这个没问题,因为我问在输出验证码时设置了一个header("content-type:image/png");头信息),但返回的信息格式竟然是text格式,这又是什么梗!!!一脸懵逼!后来继续百度,看到了一篇博客(点击打开链接),他说在Header("Content-type: image/PNG");这句代码前使用ob_clean()清除输出 ,试了一下果然成功了!!!

// 输出
ob_clean();
header("Content-type: image/png");
imagepng($im);

总结一下:

验证码显示失败的解决方向:

①:确保你的php_gd2.dll模块存在ext文件夹中,确保你的gd库已经开启,检测是否开启,找到php.ini文件并搜索extension=php_gd2.dll,

       确保前面的;已去掉

②:第一步确保没问题后,还不行的话,换个版本的php_gd2.dll看看,最后是符合你电脑系统的

③:试了以上两步还不行的话,就按上面的来在Header("Content-type: image/PNG");这句代码前使用ob_clean()清除输出

④:再不行的话,好好看看你的代码吧,<?  前面是否有空隔,换行等等输出,确保没有任何输出,或者是代码语法、逻辑错误,好好看代码





  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值