laravel使用mews/captcha验证码图片不显示,php gd库重新编译安装方法

管理员

Laravel使用验证码(mews/captcha)不显示
提示错误Call to undefined function Intervention\Image\Gd\imagettfbbox()

需要PHP开启GD 库
存在gd扩展还是报错,原因是因为在gd扩展中还有几个库需要安装,需要重新编译gd库。

安装freetype

wget http://download.savannah.gnu.org/releases/freetype/freetype-2.10.0.tar.bz2
tar jxvf freetype-2.10.0.tar.bz2
cd  freetype-2.10.0 
./configure --prefix=/usr/local/freetype
make && make install

安装zlib
官网地址:http://www.zlib.net

下载好上传到服务器

tar -zxvf zlib-1.2.11.tar.gz
cd zlib-1.2.11/
./configure --prefix=/usr/local/freetype 
make && make install

安装jpegsrc

wget  http://www.ijg.org/files/jpegsrc.v9d.tar.gz
tar zxvf jpegsrc.v9d.tar.gz
cd jpeg-9d
./configure --prefix=/usr/local/jpeg
make && make install

安装Libpng

wget https://sourceforge.net/projects/libpng/files/libpng16/1.6.37/libpng-1.6.37.tar.gz
zxvf libpng-1.6.37.tar.gz
cd libpng-1.6.37
./configure --prefix=/usr/local/libpng
make && make install

如果已经编译过gd扩展,需要删除产生的gd.so
我的编译文件产生的文件夹路径

cd /usr/local/php7/lib/php/extensions/no-debug-non-zts-20190902/

删除gd.so

rm -rf go.so

重新编译
进入php安装包的ext文件夹,找到gd扩展
我的拓展文件地址:/usr/local/src/php-7.4.16/ext

cd /usr/local/src/php-7.4.16/ext/
/usr/local/php7/bin/phpize
cd gd
./configure --with-php-config=/usr/local/php/bin/php-config --with-jpeg-dir=/usr/local/jpeg --with-png-dir=/usr/local/libpng --with-freetype-dir=/usr/local/freetype
提示: 如果是php7.4或以上版本会出现这种警告 configure: WARNING: unrecognized options: --with-jpeg-dir, --with-png-dir, --with-freetype-dir

解决办法
参考PHP 手册 从 PHP 7.3.x 移植到 PHP 7.4.x
地址:https://www.php.net/manual/zh/migration74.other-changes.php#migration74.other-changes.pkg-config

重新执行命令

./configure --with-php-config=/usr/local/php7/bin/php-config --with-jpeg=/usr/local/jpeg --with-freetype=/usr/local/freetype
make && make install

如果是第一次安装的话:
需要把这段增加到php.ini文件 extension = gd.so
查看php.ini地址 php -i | grep php.ini
保存重启php

Killall php-fpm
/usr/local/php7/sbin/php-fpm
1人点赞
PHP
管理员

全部评论 0

推荐阅读 更多精彩内容