• 欢迎访问水熊虫网站,这里是我个人的工作博客,内容大多是遇到问题完善后,会在这里进行总结归纳内容! QQ群
  • 网站导航中的友情链接专栏上线,更新的都是自己这三年整理的一些东西,感兴趣可以看看!
  • 你所浪费的今天,是昨天死去的人奢望的明天。你所厌恶的现在,是未来的你回不去的曾经!

thinkphp5.0 本地测试正常的正常,上传到服务器验证码不显示解决办法

虚拟主机 WaterBear 5年前 (2019-01-04) 1175次浏览 已收录 扫描二维码
文章目录[隐藏]

正常排查思路:

第一 查看服务器GD库是否开启;就是PHP对应的gd扩展库没开或者没有安装 ,修改 php.ini中的extension=php_gd2.dll里面的这个前面分号没去掉。修改后重启对应WEB服务。

第二 查看生成的验证码路径是否正确;

第三 是否在服务器上直接用文本编辑配置文件等文件,导致编码不一致;


  thinkphp5.0 本地测试正常的正常,上传到服务器验证码不显示解决办法

第四  在生成验证码之前有输出。

   在生成验证码之前用var_dump( ob_get_contents())查看是否有输出。

   若有输出的话,解决办法:

   在扩展文件Image.class.php中找到buildImageVerify()方法,在生成验证码Image::output($im, $type)之前加清除有输出内容的代码ob_end_clean(); 

   在调用的地方通用加入该清除代码<?php import('ORG.Util.Image');ob_end_clean();Image::buildImageVerify();?>

或者

在验证码控制器,用ob_clean();清空缓存就OK。如下图修改:

thinkphp5.0 本地测试正常的正常,上传到服务器验证码不显示解决办法

特殊情况:thinkphp5.0在服务器iis环境下调用验证码不显示,在本地apache环境调式正常解决办法

使用代码编辑器打开文件   endor/topthink/think-captcha/CaptchaController.php,添加代码:ob_clean();  如下:

    public function verifty()
    {
 
        $config =    [
            // 验证码字体大小
            'fontSize'    =>    30,
            // 验证码位数
            'length'      =>    4,
            // 关闭验证码杂点
            'useNoise'    =>    true,
        ];
        ob_clean();//加上这句话就可以显示了
        $captcha = new Captcha($config);
        return $captcha->entry();
    }

原文:https://blog.csdn.net/u014617119/article/details/78838419 



WaterBear , 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:thinkphp5.0 本地测试正常的正常,上传到服务器验证码不显示解决办法
喜欢 (0)
[[email protected]]
分享 (0)