zlib 安装成功,也按照教程配置好了,为什么服务器上 info. PHP 还是显示没有 Zlib 支持

2018-04-16 02:12:11 +08:00
 kmdd33

参考的教程:

https://www.baidu.com/link?url=sgVbym9nTyFc8BWuYNJbA-lj7SMcTiPLtruNkhtxR3XGjZYtmB3xyK1J1PbUuNFLIeF9xgmWZ598vWfQWAoqKgPoPqNCVlkLMC_iENIZEhi&wd=&eqid=f145f8a100001c5c000000065ad39201

https://www.cnblogs.com/aluode/archive/2012/12/21/2827570.html

/etc/php/ini 中已经修改成:

zlib.output_compression = On

zlib.output_compression_level = 6

请问:怎么出现这种情况?如何修正? 3q

4113 次点击
所在节点    程序员
30 条回复
kmdd33
2018-04-16 02:21:51 +08:00
# whereis zlib
zlib: /usr/include/zlib.h /usr/share/man/man3/zlib.3.gz
msg7086
2018-04-16 02:51:37 +08:00
神啊,这又是谁瞎瘠薄写出来的瞎瘠薄教程啊
kmdd33
2018-04-16 03:31:53 +08:00
@msg7086 请问能否直接告诉我如何正确配置?
msg7086
2018-04-16 03:59:51 +08:00
@kmdd33 我只能告诉你,正常情况下直接去软件源安装相关的软件包就结束了,不会涉及到下源码,编译,自己配置等等你提到的各种问题。还有像教程里说的把软件安装到 /data/progam/zlib 什么的,我真的是这辈子头一次见到。

至于这个帖子,我也不知道你是在什么发行版下如何安装的 PHP 以及现在是什么配置情况。
首先你装了 PHP 的 zlib 扩展了吗?
kmdd33
2018-04-16 04:08:51 +08:00
PHP 的 zlib 扩展?没理解这句话,
kmdd33
2018-04-16 04:11:22 +08:00
yum install zlib

yum install zlib-devel
2 个命令输入后,
Package zlib-1.2.7-17.el7.x86_64 already installed and latest version
Nothing to do
Package zlib-devel-1.2.7-17.el7.x86_64 already installed and latest version
Nothing to do

@msg7086
msg7086
2018-04-16 04:28:04 +08:00
CentOS 7 里的包已经默认编译进 zlib 了。

https://centos.pkgs.org/7/centos-updates-x86_64/php-5.4.16-43.el7_4.1.x86_64.rpm.html

Requires
...
libz.so.1()(64bit)

所以你装好 PHP 以后,zlib 就已经在工作了。

你可以说说看为什么你认为没有 zlib 支持。
kmdd33
2018-04-16 05:00:28 +08:00
@http://104.131.43.152/info.php

麻烦您看下我服务器的 php 安装信息,里面没有 mcrypt 和 zlib
kmdd33
2018-04-16 05:02:08 +08:00
kmdd33
2018-04-16 05:03:44 +08:00
# php -v
PHP Warning: PHP Startup: Unable to load dynamic library 'zlib.so' (tried: /usr/lib64/php/modules/zlib.so (/usr/lib64/php/modules/zlib.so: cannot open shared object file: No such file or directory), /usr/lib64/php/modules/zlib.so.so (/usr/lib64/php/modules/zlib.so.so: cannot open shared object file: No such file or directory)) in Unknown on line 0
PHP Warning: PHP Startup: Unable to load dynamic library 'php_zlib.dll' (tried: /usr/lib64/php/modules/php_zlib.dll (/usr/lib64/php/modules/php_zlib.dll: cannot open shared object file: No such file or directory), /usr/lib64/php/modules/php_zlib.dll.so (/usr/lib64/php/modules/php_zlib.dll.so: cannot open shared object file: No such file or directory)) in Unknown on line 0
PHP Warning: Module 'mcrypt' already loaded in Unknown on line 0
PHP 7.2.4 (cli) (built: Mar 27 2018 17:23:35) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.2.0, Copyright (c) 1998-2018 Zend Technologies
with Zend OPcache v7.2.4, Copyright (c) 1999-2018, by Zend Technologies
msg7086
2018-04-16 05:11:48 +08:00
ZLib Version 1.2.7
我觉得还行?

你 PHP 是用的系统自带的软件包安装的吗?
kmdd33
2018-04-16 05:29:51 +08:00
@msg7086

php7 编译安装的, 从 http://104.131.43.152/info.php 这里可以看出当初执行的配置命令:

'./configure' '--prefix=/usr/local/php' '--enable-fastcgi' '--enable-fpm' '--enable-force-cgi-redirect' '--with-curl' '--with-gd' '--enable-mbstring' '--with-mysql' '--with-mysqli' '--enable-gd-native-ttf' '--enable-sockets' '--with-jpeg-dir' '--with-png-dir' '--with-freetype-dir'
msg7086
2018-04-16 05:35:48 +08:00
你可以试着 --with-zlib 编译。

我没用过 CentOS 7,前面去买了一台服务器,装上了,花了 10 分钟从软件源里安装了 PHP 7.1,成功激活 zlib。

# yum install centos-release-scl

# yum install rh-php71-php

# /opt/rh/rh-php71/root/usr/bin/php -i | grep zlib

Registered PHP Streams => https, ftps, compress.zlib, php, file, glob, data, http, ftp, compress.bzip2, phar, zip
Registered Stream Filters => zlib.*, string.rot13, string.toupper, string.tolower, string.strip_tags, convert.*, consumed, dechunk, bzip2.*, convert.iconv.*
zlib
Stream Wrapper => compress.zlib://
Stream Filter => zlib.inflate, zlib.deflate
zlib.output_compression => Off => Off
zlib.output_compression_level => -1 => -1
zlib.output_handler => no value => no value

我觉得这应该是最简单的方式了。
kmdd33
2018-04-16 05:44:30 +08:00
# yum install rh-php71-php
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
* base: mirror.atlanticmetro.net
* epel: fedora-epel.mirrors.tds.net
* extras: mirror.atlanticmetro.net
* ius: ius.mirror.constant.com
* remi-php70: mirror.team-cymru.org
* remi-php71: mirror.team-cymru.org
* remi-php72: mirror.team-cymru.org
* remi-safe: mirror.team-cymru.org
* updates: mirror.atlanticmetro.net
* webtatic: us-east.repo.webtatic.com
No package rh-php71-php available.
Error: Nothing to do


# /opt/rh/rh-php71/root/usr/bin/php -i | grep zlib
关于这个命令,/opt/rh/这个是你指定的安装目录吗?怎么后面还有 /root/usr/bin/php ?
kmdd33
2018-04-16 05:44:47 +08:00
msg7086
2018-04-16 05:53:25 +08:00
@kmdd33 我用的官方推荐的 SCLo 仓库。我没有指定过任何目录,是 SCLo 打包者指定的。

我是坚定不移地反对裸编译的。最少最少,用来生产的环境是必须要由包管理负责的。直接 make 然后 install,会把系统里的依赖搞得一团糟,很快系统运行环境就会变得无法控制了。

我看你激活了 remi 仓库,那你可以去 remi 仓库的软件列表里找 PHP 来安装,何必要自己编译呢。我激活的是 centos-sclo-rh 和 centos-sclo-sclo,你可以根据自己的情况去寻找对应的方法。
kmdd33
2018-04-16 06:02:00 +08:00
@msg7086 我原来 yum 安装的 7.1,然后 infophp 里面没有 mcrypt 和 lib,所以才尝试编译安装,我也不想找麻烦去编译
msg7086
2018-04-16 06:13:05 +08:00
@kmdd33 我又试过你用的 remi-php71 仓库了,是这样的:

https://rpms.remirepo.net/wizard/

# yum install https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
# yum install http://rpms.remirepo.net/enterprise/remi-release-7.rpm
# yum install yum-utils
# yum-config-manager --enable remi-php71
# yum update
# yum install php

Installed:
php.x86_64 0:7.1.16-1.el7.remi

# php --modules
[PHP Modules]
(略)
zlib

[Zend Modules]
kmdd33
2018-04-16 06:22:11 +08:00
@msg7086


# './configure' '--prefix=/usr/local/php' '--enable-fastcgi' '--enable-fpm' '--enable-force-cgi-redirect' '--with-curl' '--with-gd' '--enable-mbstring' '--with-mysql' '--with-mysqli' '--with-mcrypt' '--with-zlib' '--enable-gd-native-ttf' '--enable-sockets' '--with-jpeg-dir' '--with-png-dir' '--with-freetype-dir'

# make clean
# ls
# make clean
# make
# make install
# /etc/init.d/php-fpm restart
# /etc/init.d/php-fpm enable
我用的这些命令,现在成功安装了 mcrypt,Zlib 支持和 FreeType 支持,谢谢你一晚上的耐心解答,非常感谢
chinvo
2018-04-16 07:06:56 +08:00
强烈建议从官方 /知名第三方软件源安装二进制包

除非有极其特殊的需求,不建议编译安装

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/447084

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX