thinkphp部署到Linux后验证码功能不显示

来源:互联网 发布:ubuntu 运行c 编辑:程序博客网 时间:2024/05/18 23:53

thinkphp部署到Linux后验证码功能不显示

在将写好的商城项目部署到Linux服务器后发现验证码不显示,总是显示这样:
这里写图片描述
在查阅了一系列资料之后,发现有横多人遇到同样的问题,解决方法也大同小异,无非是开启GD库,去掉bom,关闭调试模式等,但是在逐一实验后发现并没有什么效果,但是我咋本地和在Windows服务器上的项目却没有问题。单独打开验证码,显示的是以html文本编码的图片乱码,这证明图片已经生成了,但是为什么不显示呢?通过查看源码发现该文件开始存在一个空格,或者是bom头。
这里写图片描述
这个现象确实很奇怪,因为我现在输出验证码之前使用函数ob_end_clean();清除过缓存区,通过查询手册,了解到该函数的返回值为bool型,我就var_dump()了一下该函数的执行结果,发现返回值为FALSE,果然这就是问题所在,但是该怎样解决呢?查询手册发现该函数执行失败会抛出一个E_NOTICE异样,我就修改了‘php.ini’文件,试着捕获一下该异样,我将php.ini文件中的error_reporting设置为E_ALL & ~E_DEPRECATED & ~E_STRICT,重启Apache之后再次运行,发现并没有什么变化,之后发现在ini文件中有个Default Value:E_ALL & ~E_NOTICE未注释,注释之后发现ob_end_clean函数的返回值变成了TRUE,验证码也可以正常演示了,至此问题解决。

总结:该问题的产生是由于Default Value 的值影响了error_reporting的配置,从而使得ob_end_clean函数失效,Default Value只是配置文件提供的注释,不可打开。

1 0
原创粉丝点击