首页   注册   登录
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  程序员

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

  •  
  •   kmdd33 · 6 天前 · 1048 次点击

    参考的教程:

    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

    30 回复  |  直到 2018-04-16 12:09:33 +08:00
        1
    kmdd33   6 天前
    # whereis zlib
    zlib: /usr/include/zlib.h /usr/share/man/man3/zlib.3.gz
        2
    msg7086   6 天前   ♥ 1
    神啊,这又是谁瞎瘠薄写出来的瞎瘠薄教程啊
        3
    kmdd33   6 天前
    @msg7086 请问能否直接告诉我如何正确配置?
        4
    msg7086   6 天前   ♥ 1
    @kmdd33 我只能告诉你,正常情况下直接去软件源安装相关的软件包就结束了,不会涉及到下源码,编译,自己配置等等你提到的各种问题。还有像教程里说的把软件安装到 /data/progam/zlib 什么的,我真的是这辈子头一次见到。

    至于这个帖子,我也不知道你是在什么发行版下如何安装的 PHP 以及现在是什么配置情况。
    首先你装了 PHP 的 zlib 扩展了吗?
        5
    kmdd33   6 天前
    PHP 的 zlib 扩展?没理解这句话,
        6
    kmdd33   6 天前
    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
        7
    msg7086   6 天前   ♥ 1
    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 支持。
        8
    kmdd33   6 天前
    @http://104.131.43.152/info.php

    麻烦您看下我服务器的 php 安装信息,里面没有 mcrypt 和 zlib
        9
    kmdd33   6 天前
        10
    kmdd33   6 天前
    # 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
        11
    msg7086   6 天前   ♥ 1
    ZLib Version 1.2.7
    我觉得还行?

    你 PHP 是用的系统自带的软件包安装的吗?
        12
    kmdd33   6 天前
    @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'
        13
    msg7086   6 天前   ♥ 1
    你可以试着 --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

    我觉得这应该是最简单的方式了。
        14
    kmdd33   6 天前
    # 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 ?
        15
    kmdd33   6 天前
        16
    msg7086   6 天前   ♥ 1
    @kmdd33 我用的官方推荐的 SCLo 仓库。我没有指定过任何目录,是 SCLo 打包者指定的。

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

    我看你激活了 remi 仓库,那你可以去 remi 仓库的软件列表里找 PHP 来安装,何必要自己编译呢。我激活的是 centos-sclo-rh 和 centos-sclo-sclo,你可以根据自己的情况去寻找对应的方法。
        17
    kmdd33   6 天前
    @msg7086 我原来 yum 安装的 7.1,然后 infophp 里面没有 mcrypt 和 lib,所以才尝试编译安装,我也不想找麻烦去编译
        18
    msg7086   6 天前   ♥ 1
    @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]
        19
    kmdd33   6 天前
    @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 支持,谢谢你一晚上的耐心解答,非常感谢
        20
    chinvo   6 天前
    强烈建议从官方 /知名第三方软件源安装二进制包

    除非有极其特殊的需求,不建议编译安装
        21
    artoostark   6 天前
    神啊,放个直链上来啊。
        22
    wulasite   6 天前 via Android
    连情人怎么这么喜欢编译安装,又不是没有 yum 源,如果实在不行,去 php 官网找源码包大集合,然后找 ext 下对应的文件 找教程编译出一个.so 来再 extension=不就好了,比如之前试过一个 pdo_oci。源码版本要对,否则导入会报错,windows 就别想了,dll 的版本对报错。
        23
    kaneg   6 天前 via iPhone
    搞不懂现在很多新手学新东西都喜欢从最难的方式开始。放着包管理工具一行命令就可以搞定的方式不用,偏要自己从源码编译。其次,有 ubuntu 这种对新手容易上手的系统不用,偏要用自己无法驾驭的 centos
        24
    Bardon   6 天前
    @kaneg 因为很多博客教程,各种一键安装包,都是编译...

    楼上很多都说了,开一个第三方仓库,直接包管理安装,特别是新手。

    不过,新手,接错 docker 貌似也不错,现成的容器。
        25
    wvc   6 天前
    编译 PHP 时,加上--with-zlib=Zlib 安装路径试试。
        26
    xinl   6 天前   ♥ 1
    楼上的就是因为年轻人才喜欢瞎折腾这无可厚非,就事论事给出解决建议不好非要批判一番
    我之前装 php 基本就是编译的,装的话找到你那个版本的 php 源码然后解压,接着进入源码解压目录下的 ext 文件夹,进入 zlib,然后按照源码编译安装的方法,
    phpize
    ./configure 命令后面配置上 php-config 文件,
    make && make install
    接着 php.ini 中要开启 zlib 扩展,extension 里面加上 zlib.so,然后重启 httpd 就行了。。。
        27
    AstroProfundis   6 天前
    没事不要自己编译...要编译就学学包管理自己打包...
    我还记得几年前测试的编译安装比包管理安装的性能差了一大截,帖子应该就在 V2EX 上,就更没理由自己瞎写几个基础参数就编译了...
        28
    geeklian   6 天前 via Android
    年轻人真是喜欢瞎折腾...

    我们这银行都是直接 yum 安装离线包。

    自己编译安全补丁没人替你做好,稳定性没保证,性能还不见的好,然后浪费时间.....
        29
    congeec   6 天前 via iPhone
    @msg7086 老哥真有耐心,社区就缺你这样的

    @kmdd33 大胸弟能看官方文档就不看博客。传统的安装方式要么事用包管理安装,要么是下载源码按官方的指南安装。不打扰不承认有些博客教程质量高,但是我发现绝大多数博客质量差,误导信新人。
    lnmp 一键安装包啥的也不要用,不懂原理及基本没发维护升级。

    一句话,跟着软件作者走
        30
    julyclyde   6 天前
    一键安装包:解决了其它社会制度不存在的问题
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   鸣谢   ·   1854 人在线   最高记录 3541   ·  
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.0 · 19ms · UTC 06:40 · PVG 14:40 · LAX 23:40 · JFK 02:40
    ♥ Do have faith in what you're doing.
    沪ICP备16043287号-1