当前位置:   article > 正文

验证码使用不了 Fatal error: Call to undefined function imagettftext() 解决办法 PHP+GD库添加freetype拓展 解决问题的整个过程复盘_call to undefined function think\imagettftext()

call to undefined function think\imagettftext()

今天作者遇到一个问题  是使用某一验证码类时,PHP的报错imagettftext 函数未定义 

PHP Fatal error:  Call to undefined function imagettftext() 
错误提示是指GD库中缺少freetype库,你装了GD不一定就支持freetype,很多人理解错误,freetype 不是一个独立的扩展,是附着在GD库上的。

freetype库相关知识补充

freetype库是一个完全免费开源的、高质量的且可移植的字体引擎,它提供统一的接口来访问多种字体格式文件,包括TrueType、OpenType、Type1、CID、CFF、Windows FON/FNT、X11 PCF等。

于是乎各种查找资料,最后终于解决,就是需要freetype 这个    下面详细说明一下解决问题的整个过程复盘。

运行环境   PHP 7.4.20

 首先查询了一下PHP 相关扩展,查询得知,GD库扩展中并无freetypefreetype拓展 如下图:

 假设本环节已经安装了libpng 和zlib jpegsrc 这几个和GD库配合使用的拓展。

首先按照查找到的资料先去按照Freetype库 官网下载地址:Index of /releases/freetype/ 

下载对应版本

也可使用wget 命令  如下:

  1. wget http://download.savannah.gnu.org/releases/freetype/freetype-2.4.0.tar.bz2
  2. tar jxvf freetype-2.4.0.tar.bz2
  3. cd freetype-2.4.0
  4. ./configure --prefix=/usr/local/freetype
  5. make && make install

其中prefix 为安装的目录  要记住的  后续有用

安装好了   需要到啥ext目录中的GD目录中进行编译   

此时我并不知道GD库的那个ext在哪里,网上也没说的很明白  于是乎使用find 命令  命令具体如下:  

  1. find / -name gd.so
  2. /usr/lib64/php/modules/gd.so
  3. /mkd/php-7.4.20/ext/gd/modules/gd.so
  4. /mkd/php-7.4.20/ext/gd/.libs/gd.so
  5. /www/php/lib/php/extensions/no-debug-non-zts/gd.so

结果显示我的那个目录在 /mkd/php-7.4.20/ext/gd

cd /mkd/php-7.4.20/ext/gd

确保先安装freestyle,然后是php-gd;如果是先安装了php-gd,那么在安装完freestyle后,需要make clean。(这句很重要,这句很重要,这句很重要)

鉴于我已经是先按照好GD库,在安装的freetype,于是输入命令

make clean

接着执行PHP安装目录下的一个phpize   我的PHP安装目录在/www/php/bin/phpize  于是我输入命令

/www/php/bin/phpize

此时出现报错  

cannot find config.m4   这个

于是又百度  得出结果是

扩展包下面的名字不是config.m4,有可能有类似config0.m4的文件;因此名字不一样也是找不到的,我们需要用mv config0.m4 config.m4;修改文件名字,再来运行phpize

于是整个编译命令是

  1. cd /mkd/php-7.4.20/ext/gd 进入zlib扩展目录
  2. mv config0.m4 config.m4; 重命名config0.m4
  3. /www/php7/bin/phpize
  4. /configure -with-php-config=/www/php/bin/php-config --with-freetype=/usr/local/freetype
  5. make && make install;

其中  -with-php-config 为PHP安装目录下的php-config 这个   --with-freetype为freetype安装的目录  网上很多都写成了 --with-freetype-dir  因为版本问题  PHP 7.4 只能写成 --with-freetype 要不然编译报错。 

官方给出的参数说明:

 最后是重启php了  使用命令 如下:

  1. killall php-fpm
  2. /www/php/sbin/php-fpm

 或者使用信号进行重启  使用命令 如下:

  1. lsof -i:9000
  2. COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
  3. php-fpm 15681 root 8u IPv4 24056585 0t0 TCP localhost:cslistener (LISTEN)
  4. php-fpm 15682 nobody 6u IPv4 24056585 0t0 TCP localhost:cslistener (LISTEN)
  5. php-fpm 15683 nobody 6u IPv4 24056585 0t0 TCP localhost:cslistener (LISTEN)
  6. kill -USR2 15681

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/不正经/article/detail/456292
推荐阅读
相关标签
  

闽ICP备14008679号