开发者社区> 问答> 正文

linuxCentOSphp项目中验证码文字无法显示

如题:


linux CentOS php项目中验证码文字无法显示


在本地电脑上的 本地服务武器localhost上可以正常显示。


php环境配置是用的
yum install php
yum install php-mysql php-gd php-imap php-ldap php-odbc php-pear php-xml php-xmlrpc


结果在PHP项目中我的一个验证码无法显示出来,只显示出了背景, 文字无法显示。
如图:




php中代码我用的是
imagettftext();这个函数


然后我网上搜索了一下,貌似有人说 gd 库没加载
于是我看了一下我的 php.ini 文件,貌似还真没有 extension=php_gd2.dll,
我对照了一下本地的 localhost 的 php.ini 文件,有这行代码。


但是在 linux 上就没有这行代码。求解..

展开
收起
by灬阿萌 2014-07-29 01:36:39 13646 0
2 条回答
写回答
取消 提交回答
  • 回1楼超乎想象的帖子
    谢啦,,出现问题是 Imagettftext() 这一句未执行,不过这么做还是不行。

    本地就可以,,服务器就不可以,,

    看来验证码我得换个方法做了。。。
    2014-07-30 10:07:13
    赞同 展开评论 打赏
  • 你这情况应该是GD库已经加载了,如果加载不上的应该是显示X
    Imagettftext()函数没有成功的执行也会导致只显示图片没有文字
    因为不知道你的是什么程序,所以参考下DEDEcms故障分析:

    第一步确认include/data/fonts/ 里面存在字体文件  默认为ggbi.ttf
    第二步打开验证码生成文件 Include/vdimgck.php
    找到   for($i=0;$i<$rndcodelen;$i++)

        {

            $bc = mt_rand(0, 1);

            $rndstring[$i] = strtoupper($rndstring[$i]);

            $c_fontColor = $fontColor[mt_rand(0,4)];

            $y_pos = $i==0 ? 4 : $i*($font_size+2);

            $c = mt_rand(0, 15);

            @imagettftext($im, $font_size, $c, $y_pos, 19, $c_fontColor, $font_file, $rndstring[$i]);

            $lastc = $rndstring[$i];

    }


    在for($i=0;$i<$rndcodelen;$i++) 上一行 加上如下代码:
              
    $font_file= str_replace("\\","/",$font_file);
    即把字体文件路径中反斜杠替换成斜杠 因为我们知道反斜杠有转译字符的功能,

    $font_file 路经大体为 盘符:\appserv\www 系统错误的把反斜杠 当作转义用了 导致$font_file也就不是一个路径了 所以Imagettftext()函数总是返回错误

    加上$font_file= str_replace("\\","/",$font_file);即可解决




    举一反三的试试吧
    2014-07-29 10:30:49
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载