Oracle Linux 7下安装PHP 7.4的php-gd时出错如何解决?
Oracle Linux 7 安装PHP 7.4 php-gd组件依赖错误解决
在Oracle Linux 7系统上为PHP 7.4安装php-gd组件时,执行以下命令:
sudo yum update sudo yum install php-gd
均触发如下依赖错误:
Loaded plugins: langpacks, ulninfo Resolving Dependencies --> Running transaction check ---> Package php-gd.x86_64 0:7.4.33-15.el7.remi will be installed --> Processing Dependency: php-common(x86-64) = 7.4.33-15.el7.remi for package: php-gd-7.4.33-15.el7.remi.x86_64 --> Processing Dependency: libgd.so.103()(64bit) for package: php-gd-7.4.33-15.el7.remi.x86_64 --> Running transaction check ---> Package gd3php.x86_64 0:2.3.3-7.el7.remi will be installed --> Processing Dependency: libraqm.so.0()(64bit) for package: gd3php-2.3.3-7.el7.remi.x86_64 --> Processing Dependency: libwebp.so.7()(64bit) for package: gd3php-2.3.3-7.el7.remi.x86_64 ---> Package php-common.x86_64 0:7.4.33-8.el7.remi will be updated --> Processing Dependency: php-common(x86-64) = 7.4.33-8.el7.remi for package: php-xml-7.4.33-8.el7.remi.x86_64 --> Processing Dependency: php-common(x86-64) = 7.4.33-8.el7.remi for package: php-sodium-7.4.33-8.el7.remi.x86_64 --> Processing Dependency: php-common(x86-64) = 7.4.33-8.el7.remi for package: php-7.4.33-8.el7.remi.x86_64 --> Processing Dependency: php-common(x86-64) = 7.4.33-8.el7.remi for package: php-json-7.4.33-8.el7.remi.x86_64 --> Processing Dependency: php-common(x86-64) = 7.4.33-8.el7.remi for package: php-cli-7.4.33-8.el7.remi.x86_64 --> Processing Dependency: php-common(x86-64) = 7.4.33-8.el7.remi for package: php-pdo-7.4.33-8.el7.remi.x86_64 ---> Package php-common.x86_64 0:7.4.33-15.el7.remi will be an update --> Running transaction check ---> Package libraqm.x86_64 0:0.7.0-4.el7 will be installed ---> Package libwebp7.x86_64 0:1.0.3-2.el7.remi will be installed ---> Package php.x86_64 0:7.4.33-8.el7.remi will be updated ---> Package php.x86_64 0:7.4.33-15.el7.remi will be an update ---> Package php-cli.x86_64 0:7.4.33-8.el7.remi will be updated ---> Package php-cli.x86_64 0:7.4.33-15.el7.remi will be an update ---> Package php-json.x86_64 0:7.4.33-8.el7.remi will be updated ---> Package php-json.x86_64 0:7.4.33-15.el7.remi will be an update ---> Package php-pdo.x86_64 0:7.4.33-8.el7.remi will be updated --> Processing Dependency: php-pdo(x86-64) = 7.4.33-8.el7.remi for package: php-oci8-7.4.33-8.el7.remi.x86_64 ---> Package php-pdo.x86_64 0:7.4.33-15.el7.remi will be an update ---> Package php-sodium.x86_64 0:7.4.33-8.el7.remi will be updated ---> Package php-sodium.x86_64 0:7.4.33-15.el7.remi will be an update ---> Package php-xml.x86_64 0:7.4.33-8.el7.remi will be updated ---> Package php-xml.x86_64 0:7.4.33-15.el7.remi will be an update --> Running transaction check ---> Package php-oci8.x86_64 0:7.4.33-8.el7.remi will be updated ---> Package php-oci8.x86_64 0:7.4.33-15.el7.remi will be an update --> Processing Dependency: libclntsh.so.21.1()(64bit) for package: php-oci8-7.4.33-15.el7.remi.x86_64 --> Finished Dependency Resolution Error: Package: php-oci8-7.4.33-15.el7.remi.x86_64 (remi-php74) Requires: libclntsh.so.21.1()(64bit) You could try using --skip-broken to work around the problem You could try running: rpm -Va --nofiles --nodigest
尝试提示的--skip-broken和rpm -Va --nofiles --nodigest命令后,问题仍未解决。
解决方案
错误根源是更新php-oci8组件时,需要Oracle客户端的libclntsh.so.21.1库文件,以下是三种解决思路:
1. 安装对应版本的Oracle Instant Client
Oracle Linux 7默认提供Oracle Instant Client的yum源,启用后即可安装所需库:
# 启用Oracle Instant Client源 sudo yum-config-manager --enable ol7_oracle_instantclient # 安装21.1版本的基础客户端包 sudo yum install oracle-instantclient-basic-21.1.0.0.0
安装完成后,重新执行yum update或yum install php-gd即可。
2. 卸载不需要的php-oci8组件
如果业务不需要Oracle数据库连接功能,可直接卸载php-oci8,消除依赖链:
sudo yum remove php-oci8 # 重新安装php-gd sudo yum install php-gd
3. 临时排除php-oci8的更新
若不想卸载组件也不想安装Oracle客户端,可在执行yum命令时排除php-oci8的更新:
# 安装php-gd时排除php-oci8 sudo yum install php-gd --exclude=php-oci8 # 或系统更新时排除php-oci8 sudo yum update --exclude=php-oci8
内容的提问来源于stack exchange,提问作者Tahmidur Rahman
相关产品推荐
相关产品推荐

