【问题标题】:CentOS PHP 7.4 Error upgrading pecl / pear packagesCentOS PHP 7.4 升级 pecl / pear 包时出错
【发布时间】:2020-04-24 10:26:10
【问题描述】:

CentOS 7.6

我已经在 5.x 版本和 7.2 上运行了相同的过程,没有问题,但是在 7.4 中一些 pear/pecl 步骤失败了,因为我现在正在尝试从 7.2 升级迁移。

在配置过程中,我正在从 pecl 运行 timezonedb 升级并遇到错误:

[root@d9471f6a1ab2 /]# pear upgrade -c pecl.php.net timezonedb
downloading timezonedb-2019.3.tgz ...
Starting to download timezonedb-2019.3.tgz (413,166 bytes)
....................................................................................done: 413,166 bytes
5 source files, building
running: phpize
Can't find PHP headers in /usr/include/php
The php-devel package is required for use of this command.
ERROR: `phpize' failed

所以我很自然地尝试安装它要求php-devel 的软件包,但是它试图将我现有的一些软件包降级回php5.4!

yum install php-devel 
...
Error: php73-cli conflicts with php-cli-5.4.16-46.1.el7_7.x86_64
Error: php73-common conflicts with php-common-5.4.16-46.1.el7_7.x86_64

我构建 php 运行时的正常过程包括安装 timezonedb pecl 包并在配置过程中对其进行升级。这个过程在之前的所有 PHP 升级中没有太大变化,但是我在 php7.4 上遇到了一些问题

完整的软件包列表包含在下面,但最重要的是,我安装了以下内容:

php74-php-pear

php74-php-devel

这是yum list installed php*的输出

[root@d9471f6a1ab2 /]# yum list installed php*
Loaded plugins: fastestmirror, ovl
Loading mirror speeds from cached hostfile
 * base: mirror.fileplanet.com
 * epel: mirror.prgmr.com
 * extras: mirror.hostduplex.com
 * remi-safe: mirrors.mediatemple.net
 * updates: repos.lax.quadranet.com
Installed Packages
php-cli.x86_64                                                                                                                                                                   5.4.16-46.1.el7_7                                                                                                                                                        @updates  
php-common.x86_64                                                                                                                                                                5.4.16-46.1.el7_7                                                                                                                                                        @updates  
php-devel.x86_64                                                                                                                                                                 5.4.16-46.1.el7_7                                                                                                                                                        @updates  
php74-php-bcmath.x86_64                                                                                                                                                          7.4.1-1.el7.remi                                                                                                                                                         @remi-safe
php74-php-cli.x86_64                                                                                                                                                             7.4.1-1.el7.remi                                                                                                                                                         @remi-safe
php74-php-common.x86_64                                                                                                                                                          7.4.1-1.el7.remi                                                                                                                                                         @remi-safe
php74-php-devel.x86_64                                                                                                                                                           7.4.1-1.el7.remi                                                                                                                                                         @remi-safe
php74-php-fpm.x86_64                                                                                                                                                             7.4.1-1.el7.remi                                                                                                                                                         @remi-safe
php74-php-gd.x86_64                                                                                                                                                              7.4.1-1.el7.remi                                                                                                                                                         @remi-safe
php74-php-intl.x86_64                                                                                                                                                            7.4.1-1.el7.remi                                                                                                                                                         @remi-safe
php74-php-json.x86_64                                                                                                                                                            7.4.1-1.el7.remi                                                                                                                                                         @remi-safe
php74-php-mbstring.x86_64                                                                                                                                                        7.4.1-1.el7.remi                                                                                                                                                         @remi-safe
php74-php-opcache.x86_64                                                                                                                                                         7.4.1-1.el7.remi                                                                                                                                                         @remi-safe
php74-php-pdo.x86_64                                                                                                                                                             7.4.1-1.el7.remi                                                                                                                                                         @remi-safe
php74-php-pear.noarch                                                                                                                                                            1:1.10.10-4.el7.remi                                                                                                                                                     @remi-safe
php74-php-pecl-geoip.x86_64                                                                                                                                                      1.1.1-11.el7.remi                                                                                                                                                        @remi-safe
php74-php-pecl-igbinary.x86_64                                                                                                                                                   3.1.0-1.el7.remi                                                                                                                                                         @remi-safe
php74-php-pecl-imagick.x86_64                                                                                                                                                    3.4.4-6.el7.remi                                                                                                                                                         @remi-safe
php74-php-pecl-msgpack.x86_64                                                                                                                                                    2.1.0~beta1-1.el7.remi                                                                                                                                                   @remi-safe
php74-php-pecl-redis5.x86_64                                                                                                                                                     5.1.1-1.el7.remi                                                                                                                                                         @remi-safe
php74-php-pecl-xdebug.x86_64                                                                                                                                                     2.9.0-1.el7.remi                                                                                                                                                         @remi-safe
php74-php-pecl-zip.x86_64                                                                                                                                                        1.15.5-1.el7.remi                                                                                                                                                        @remi-safe
php74-php-pgsql.x86_64                                                                                                                                                           7.4.1-1.el7.remi                                                                                                                                                         @remi-safe
php74-php-process.x86_64                                                                                                                                                         7.4.1-1.el7.remi                                                                                                                                                         @remi-safe
php74-php-soap.x86_64                                                                                                                                                            7.4.1-1.el7.remi                                                                                                                                                         @remi-safe
php74-php-xml.x86_64                                                                                                                                                             7.4.1-1.el7.remi                                                                                                                                                         @remi-safe
php74-runtime.x86_64                                                                                                                                                             1.0-1.el7.remi                                                                                                                                                           @remi-safe

这是我的仓库:

 * base: mirror.fileplanet.com
 * epel: mirror.prgmr.com
 * extras: mirror.hostduplex.com
 * remi-safe: mirrors.mediatemple.net
 * updates: repos.lax.quadranet.com

【问题讨论】:

    标签: php centos centos7 pear pecl


    【解决方案1】:

    1/ timezonedb 扩展没有用。

    RPM包使用系统tzdata,单独更新。

    2/ 你对包名感到困惑

    • php74-php-* 软件包是为并行设计的软件集合 安装多个版本
    • php-* 包更易于用作单个/默认版本

    FAQ 中所述,如果您遵循wizard 说明。

    3/ 不需要从源代码构建

    大多数有用的扩展都以二进制包的形式提供,请参阅full list

    4/ 符号链接和环境

    如果你真的更喜欢 SCL 包(php74-php-*),你可以简单地使用命令设置环境

    module load php74
    

    由于 SCL 是为多个版本设计的,这允许从一个版本切换到另一个版本

    如果你想让一个集合成为默认集合,你可以安装 php74-syspaths

    但同样,php-* 包的使用更简单

    【讨论】:

    • 所以我刚刚阅读了您从 Remi 网站发送的页面。听起来yum-config-manager --enable remi-php73 是我需要的,那么我可以使用php- 包吗?不知道为什么我不必用 php72 来解决这个问题,因为我做了一个非常相似的场景并做了php72u-* pkgs。那好吧。感谢您的帮助
    • 那么 Apache httpd mod_php 呢?我不使用 php-fpm 服务 - 那么,重启后 apache 将如何选择新的 php 模块?
    • 如果你有一个单一的版本 mod_php 可以安装/使用。如果你有多个版本,你必须使用 php-fpm。
    【解决方案2】:

    编辑:更新的解决方案

    以下是我的原始解决方案。然而,这里的根本问题是,当使用 yum 安装软件包时,由于某种原因,remi 安装不会向 $PATH 添加任何内容。

    它将东西安装到/opt/remi/php74/,然后由您来更新您的环境变量。

    有一个环境源文件作为提示留下来说明要做什么:

    bash-4.2$ cat /opt/remi/php74/enable 
    export PATH=/opt/remi/php74/root/usr/bin:/opt/remi/php74/root/usr/sbin${PATH:+:${PATH}}
    export LD_LIBRARY_PATH=/opt/remi/php74/root/usr/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
    export MANPATH=/opt/remi/php74/root/usr/share/man:${MANPATH}
    

    就我而言,我使用的是 docker,所以我添加到我的 Dockerfile:

    ENV PATH="/opt/remi/php74/root/usr/bin:/opt/remi/php74/root/usr/sbin${PATH:+:${PATH}}"
    ENV LD_LIBRARY_PATH="/opt/remi/php74/root/usr/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}"
    ENV MANPATH="/opt/remi/php74/root/usr/share/man:${MANPATH}"
    

    之后,一切正常!所以环境变量就是我们所需要的。您可以使用 rc.local、/etc/environment 等来使用它们更新您的环境。

    --------

    原始解决方案:

    最终解决了以下问题:

    确保我们有最新的回购:

    yum -y install \
        https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm \
        https://repo.ius.io/ius-release-el7.rpm \
        https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm \
        http://mirrors.mediatemple.net/remi/enterprise/remi-release-7.rpm
    

    然后,至少安装 php74-php-pearphp74-php-devel(我需要安装 WAY MORE 库,但我相信这些都是必需的)

    链接remi安装的梨。不知道为什么这首先没有发生:

    ln -sf /opt/remi/php74/root/usr/bin/pear /usr/bin/pear
    

    然后我就可以做我需要做的事情了:

    pear channel-update pecl.php.net 
    pear upgrade -c pecl.php.net timezonedb
    

    工作成功。

    • 我认为问题在于我运行了错误的 pear 版本,并且新安装的版本没有添加到路径中。创建到路径目录的链接解决了这个问题。
    • 您也可以编辑 $PATH,但这更适合我的方案。

    【讨论】:

      猜你喜欢
      • 2016-01-21
      • 2021-08-13
      • 2021-05-18
      • 2021-11-20
      • 2022-12-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-02-15
      相关资源
      最近更新 更多