解决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安装完成。