You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

RHEL 8.4环境下httpd启动报dlopen错误且无法安装libapr1问题求助

RHEL跨版本升级后httpd启动失败排查方案

报错根因说明

  • 包名不匹配:libapr1是Debian/Ubuntu发行版的包命名规则,RHEL 8 中apr运行库的官方包名为apr,所以直接搜索安装libapr1会提示找不到匹配包。
  • 二进制兼容性问题:原有httpd是RHEL 6环境下编译的二进制文件,依赖的libapr-1.so.0链接的是RHEL 6自带的低版本glibc库,RHEL 8的glibc版本更高,符号表不匹配,因此启动时提示找不到dlopen符号。

修复步骤

步骤1:安装RHEL 8官方apr相关依赖

首先确认系统已启用BaseOS和AppStream官方源,执行以下命令安装依赖:

yum install -y apr apr-devel apr-util apr-util-devel

步骤2:修复httpd服务,二选一即可

方案A:使用RHEL 8官方httpd(推荐)

官方源提供的httpd适配RHEL 8系统环境,稳定性更高:

  1. 执行安装命令:yum install -y httpd
  2. 将原有自定义配置、站点数据从旧的/usr/xxxxx/xxx/apache/目录迁移到对应路径:
    • 配置文件迁移到/etc/httpd/conf.d/
    • 站点文件迁移到/var/www/html/
    • 日志目录可按需修改配置指定
  3. 启动服务并设置开机自启:
    systemctl start httpd
    systemctl enable httpd
    

方案B:重新编译自定义版本apache

如果必须使用当前的自定义apache版本,在RHEL 8环境下重新编译即可:

  1. 下载对应版本的apache源码包,编译时指定使用系统安装的apr库,避免使用自带的旧版本libapr:
    ./configure --with-apr=/usr/bin/apr-1-config --with-apr-util=/usr/bin/apu-1-config # 其余参数保持原有编译参数即可
    make && make install
    
  2. 编译完成后重新启动httpd服务即可。

步骤3:验证修复结果

执行systemctl status httpd确认服务处于active运行状态,再执行curl localhost确认服务可正常响应请求。

内容的提问来源于stack exchange,提问作者Learner

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 09:39:03