通过php7.4.13源码安装gd扩展
通过php7.4.13源码安装gd扩展
因为之前安装php是采用的源码编译安装,当时的编译参数是
./configure --prefix=/usr/local/php --enable-fpm --with-fpm-user=nginx --with-fpm-group=nginx --enable-mysqlnd --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd --enable-mysqlnd-compression-support --with-iconv-dir --with-freetype-dir --with-jpeg-dir --with-png-dir --with-zlib --with-libxml-dir --enable-xml --disable-rpath --enable-bcmath --enable-shmop --enable-sysvsem --enable-inline-optimization --with-curl --enable-mbregex --enable-mbstring --enable-intl --with-mcrypt --with-libmbfl --enable-ftp --with-gd --enable-gd-jis-conv --enable-gd-native-ttf --with-openssl --with-mhash --enable-pcntl --enable-sockets --with-xmlrpc --enable-zip --enable-soap --with-gettext --disable-fileinfo --enable-opcache --with-pear --enable-maintainer-zts --with-ldap=shared --without-
当时有这个提示
也就是这几个参数是无效的,可能是我参考的文章有的老了或者不匹配吧。
上传图片的时候收到一下报错
其实并不是上传的图片过大的问题,图片并不大,并且之前已经调整过max_postfile_size的大小了。
真正的报错信息是Fatal error: Uncaught Error: Call to undefined function imagecreatefromjpeg() in
在网上看了下,说是缺少gd库扩展,
我看有的文章上面编译php开启gd库的编译选项是--enable-gd
,不是--with-gd
。
本人也不推荐在编译php的时候编译扩展,比如gd,因为一旦这个时候编译了的话,如果后期想编译扩展时的配置本人就没法弄了,即使自己再重新编译扩展,但是没法覆盖在编译php时就编译的扩展,即使在php.ini中开,重启php-fpm
的时候也会提示该库已经加载了的警告。
于是自己在网上搜索,学习学习怎么编译gd扩展。
查看当前是否启用了gd扩展
php5 -m | grep -i gd
或者
php -i | grep -i --color gd
其中在php的源码里面就包含了gd,就在源码文件夹的ext
目录下,每个对应的扩展都有一个文件夹
cd /usr/local/php/ext/gd
/usr/local/bin/phpize
./configure --with-php-config=/usr/local/bin/php-config --with-freetype --with-jpeg --enable-gd
make
make install
成功了就会在php的extension_dir(例如/usr/local/php/lib/php/extensions/no-debug-zts-20190902)目录下面多一个gd.so的文件,这个就是我们需要的扩展了,然后在php.ini文件里面开启这个extension,如果里面没有的话直接写上
extension=gd
我们可能会看到很多extension明明自己都在用了,怎么在php.ini里面还是被注释的状态呢?这个时候不用画蛇添足的把那些注释打开哦,因为我们在编译的时候的参数已经将它们开启了。