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

升级Apache httpd至2.4.46后启动报错:undefined symbol问题求助

解决Apache httpd 2.4.46启动报错:undefined symbol: apr_procattr_perms_set_register

这事儿其实很好判断——就是APR(Apache Portable Runtime)版本不兼容闹的!你把httpd升级到了2.4.46,但系统里配套的APR库还是原来2.4.6版本的旧东西,新的httpd二进制文件要调用一个叫apr_procattr_perms_set_register的符号,可旧APR里根本没有这个玩意儿,自然启动失败了。

下面给你一步步解决的办法:

1. 先查清楚当前系统的APR版本

先确认下你现在用的APR到底是啥版本,执行这俩命令看看:

apr-1-config --version
apu-1-config --version

httpd 2.4.46要求APR至少是1.6.5,APR-util至少是1.6.1,要是你的版本比这低,那问题肯定出在这儿。

2. 升级APR和APR-util

办法一:用包管理器直接升级(有合适源的话优先选这个)

如果是RHEL/CentOS系的系统,先确保EPEL源开了,然后直接升级:

yum update apr apr-util

Debian/Ubuntu系的话就用这个:

apt-get update && apt-get install --only-upgrade apr apr-util

办法二:手动编译安装(包管理器没合适版本时用)

要是包管理器里找不到符合要求的版本,那就自己编译:

  • 先搞APR(选1.6.5以上的版本,比如1.7.0就和2.4.46兼容):
    wget https://downloads.apache.org/apr/apr-1.7.0.tar.gz
    tar zxf apr-1.7.0.tar.gz
    cd apr-1.7.0
    ./configure --prefix=/usr/local/apr
    make && make install
    
  • 再搞APR-util(对应1.6.1以上版本):
    wget https://downloads.apache.org/apr/apr-util-1.6.1.tar.gz
    tar zxf apr-util-1.6.1.tar.gz
    cd apr-util-1.6.1
    ./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr
    make && make install
    
  • 最后重新编译httpd,指定新的APR路径:
    cd httpd-2.4.46
    ./configure --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util [这里加上你之前编译httpd用的其他参数]
    make && make install
    

3. 验证库依赖是否正确

升级完之后,得确认httpd确实用上了新的APR库,执行这个命令:

ldd /usr/sbin/httpd | grep apr

看输出里的apr和apr-util路径是不是你刚安装的新路径,别还是旧的。

4. 重新启动httpd

最后再试一次启动:

systemctl start httpd

要是还有问题,就去看系统日志找线索:

journalctl -u httpd -xe

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.11 08:17:31