thinkphp3.2.3视图中无法显示验证码及图片的解决方案。

今天在做验证码功能的时候,发现,thinkphp视图中引入验证码图片,却显示一个破碎照片的小图标,能明显,图片引入失败。

就是这个样子:

于是我在网上搜索怎么解决,网上答案主要分为以下几种:

1.php没有安装gd库,

2.或者gd库没有开启。

3.有BOM头存在,需要用ob_clean()函数清理。


可还是不管用。

我用phpinfo()打开网页,

我又打开我的php.ini设置,把php_gd2.dll前面的分号去掉(取消注释),




可是还是无法显示图片。

后来我查到,php_gd2.dll是windows环境中gd库使用时需要开启的扩展,而我使用的是linux,在php.ini里需要开php_gd.so。

但我在我的php.ini里没有找到php_gd.so这个文件。

后来我决定重新编译安装一下gd库,因为这样能生成所谓的php_gd.so,

大家如果想尝试,可以试试,会费些时间。

虽然没有解决我的问题,但还是感谢这个博主的教程->:linux下编译安装gd库教程。

虽然有了php_gd.so这个文件,也在php.ini里添加这这个扩展,但是还是无法显示图片。

       从早搞到晚,实在有点崩溃。

后来,我发现,打开谷歌调试工具,图片地址没有报错,说明路径是合法的。

而当我复制图片链接,重新打开图片时,显示的却是thinkphp首页,根本没有定向到我的验证码方法。

所以我觉得时我的src地址有问题,我在视图中使用的时tp3自带的{:U('')}方法,



但我觉得这个方法本身因该没有问题,于是我尝试在上面的图片链接中去掉admin模块前的index.php,

再去访问图片链接,


终于,验证码这个控制器下的方法管用了,验证码显示了。

在这个index.php后面无论加什么控制器方法,都会定向到tp首页。

可是,tp3的U方法为什么会在url里添加一个index.php呢?

后来我发现,与thinkphp的url模式有关,thinkphp默认是pathinfo模式,

而U方法会在pathinfo模式下,自动添加index.php,生成一个路由。

而如果改成rewrite模式,就不会添加index.php。就能访问一个正常的方法链接。



转载于:https://juejin.im/post/5b717255f265da28364c3181

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值