CentOS升级后httpd启动失败:mod_http2.so符号未定义问题求助
升级CentOS系统后执行service httpd restart重启服务失败,启动日志报错如下:
Sep 08 10:39:15 myhost systemd[1]: Starting The Apache HTTP Server...
Sep 08 10:39:16 myhost httpd[97298]: httpd: Syntax error on line 56 of /etc/httpd/conf/httpd.conf: Syntax error on line 1 of /etc/httpd/conf.modules.d/10-h2.conf: Cannot load modules/mod_http2.so into server: /etc/httpd/modules/mod_http2.so: undefined symbol: apr_pencode_base64_binary
Sep 08 10:39:16 myhost systemd[1]: httpd.service: main process exited, code=exited, status=1/FAILURE
Sep 08 10:39:16 myhost systemd[1]: Failed to start The Apache HTTP Server.
这个问题核心是mod_http2.so模块依赖的APR库符号缺失,大概率是升级过程中APR库与httpd模块版本不匹配,或者mod_http2模块未随系统同步升级导致的。
以下是具体解决步骤:
检查APR和httpd相关包的版本,确认是否存在版本不一致:
rpm -qa | grep -E 'apr|httpd'重新安装httpd及相关模块包,确保所有组件版本匹配:
dnf reinstall httpd httpd-mod_http2 apr apr-util若上述操作无效,且暂时不需要HTTP/2功能,可临时禁用mod_http2模块:
编辑/etc/httpd/conf.modules.d/10-h2.conf,注释掉LoadModule http2_module modules/mod_http2.so这一行;或者直接重命名该配置文件:mv /etc/httpd/conf.modules.d/10-h2.conf /etc/httpd/conf.modules.d/10-h2.conf.bak最后尝试重启httpd服务:
systemctl restart httpd
如果需要保留HTTP/2功能,确保系统APR库为最新版本,重新安装相关包能解决多数版本不兼容问题。
内容的提问来源于stack exchange,提问作者Porchelvan Jayaraman

