今天在本地新建了一个虚拟主机,部署了一个之前写的php小网站。 因为之前使用的是wamp集成环境,所以没有出现这种情况。 现在突然发现无法生成验证码。
于是我开始了寻找Bug的旅程,在网上查找了很多解决方案,最终解决了。 现将其分享如下:
错误一:
出现上述情况时,最基本的错误就是你可能忘记在php中安装gd模块了。在这种环境下,你只需要在php.ini文件中找到它即可。
;=.dll
只需删除前面的分号即可。 重启后可以在()中找到这个
如果是该环境下,需要安装gd模块,命令为
sudo apt-get php5-gd
安装完成后,还可以看到上面的模块。
错误2:
如果经过上述安装后发现还是不行,那么可能是以下问题造成的。
您的代码很可能是使用文本编辑器(如 或 ++)编辑的,那么它们的默认编码格式是带有 BOM 的 utf-8。
UTF-8 BOM 也称为 UTF-8 签名。 事实上,UTF-8 BOM 对 UFT-8 没有影响。 添加它以支持 UTF-16 和 UTF-32。 BOM签名的意义是告诉编辑器当前的文件。 使用哪种编码方便编辑器识别,但是虽然编辑器中不显示BOM,但是它会产生输出,就像多了一个空行一样。 一般我用的是UTF-8 BOM-free格式,所以需要将代码的编码格式改为BOM-free格式。
错误三:
如果经过以上两步,发现还是不行,那你就得动用你的王牌了。
使用()后,清除缓存。
该函数的作用是丢弃输出缓冲区的内容。 如果你有很多生成的图像文件,如果你想正确访问它们,你需要经常清除缓冲区。
()
();
$a=new();
::set('', ($a->(4, 15)));
查看::("", $a);
看法::(””);
退出(0);
注意:如果使用较高的PHP版本,则不能使用未定义的变量,否则会报错。 $和$['']使用前必须用isset判断,或者如果使用旧代码,则在开头添加。 (E_ALL & ~); 屏蔽错误(不推荐),因此使用 isset() 确保它已定义。 否则可能无法显示验证码。