php验证图片不显示
错误:
今天在在当地创建了一个虚拟主机,把之前写好的一个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虽然在编纂器中不显示,但是会发生输出,就像多了一个空行。一样我用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视频教程
以上就是php验证图片不显示的具体内容,更多请关注百分百源码网其它相关文章!