发布于 4年前

解决Fatal error: Uncaught Error: Call to undefined function gzcompress() ,安装zlib.so扩展

项目移动到了新的服务器环境,今天发现保存出现问题。根据日志提示,发现提示 Fatal error: Uncaught Error: Call to undefined function gzcompress() ,gzcompress()这个方法不完善。

察其原因,是php的zlib扩展不完善,导致的方法不可用。那就安装zlib扩展。

1、先在服务器执行安装zlib-devel:yum install zlib-devel
2、找到php的安装目录,如:/opt/php-7.1.16/ext/zlib

查看目录结构:

[root@**** zlib]# ll
total 112
-rw-r--r-- 1 1000 1000  1952 Mar 28  2018 config0.m4
-rw-r--r-- 1 1000 1000   604 Mar 28  2018 config.w32
-rw-r--r-- 1 1000 1000    84 Mar 28  2018 CREDITS
-rw-r--r-- 1 1000 1000  1995 Mar 28  2018 package.xml
-rw-r--r-- 1 1000 1000   939 Mar 28  2018 php_zlib.def
-rw-r--r-- 1 1000 1000  2986 Mar 28  2018 php_zlib.h
drwxr-xr-x 2 1000 1000 12288 Mar 28  2018 tests
-rw-r--r-- 1 1000 1000 46737 Mar 28  2018 zlib.c
-rw-r--r-- 1 1000 1000 13167 Mar 28  2018 zlib_filter.c
-rw-r--r-- 1 1000 1000  5262 Mar 28  2018 zlib_fopen_wrapper.c
-rw-r--r-- 1 1000 1000   331 Mar 28  2018 zlib_win32_howto.txt

将config0.m4文件复制一份,名称为config.m4

cp config0.m4 config.m4

在当前目录执行执行phpize

[root@*** zlib]# phpize
Configuring for:
PHP Api Version:         20160303
Zend Module Api No:      20160303
Zend Extension Api No:   320160303

在这个目录就生成了一个configure脚本。

获取php-config和zlib.h路径准备备用

[root@*** zlib]# find / -name 'php-config'
/usr/local/php/bin/php-config
[root@*** zlib]# find / -name 'zlib.h'
/usr/include/zlib.h

执行编译配置

[root@*** zlib]# ./configure --with-php-config=/usr/local/php/bin/php-config --with-zlib=/usr

编译完成后执行make && make install

顺利的话会提示:Installing shared extensions: /usr/local/php/lib/php/extensions/no-debug-zts-20160303/

打开php.ini

加入:extension=zlib.so

然后将zlib.output_compression和zlib.output_compression_level分别为On和6

zlib.output_compression = On
zlib.output_compression_level = 6

再重启php,通过phpinfo(),就可以看到zlib安装完成。

©2020 edoou.com   京ICP备16001874号-3