如何解决 Apache apachectl[5465]: 分段错误(核心转储)?

如何解决 Apache apachectl[5465]: 分段错误(核心转储)?

我最近运行了一个apt 升级虽然一切看起来都很好,但现在当我尝试运行 apache2 时,我遇到了以下问题,

$ sudo systemctl start apache2
Job for apache2.service failed because the control process exited with error code.
See "systemctl status apache2.service" and "journalctl -xe" for details.
$ systemctl status apache2
● apache2.service - The Apache HTTP Server
     Loaded: loaded (/lib/systemd/system/apache2.service; enabled; vendor preset: enabled)
     Active: failed (Result: exit-code) since Thu 2022-02-10 13:35:40 PST; 30s ago
       Docs: https://httpd.apache.org/docs/2.4/
    Process: 6919 ExecStart=/usr/sbin/apachectl start (code=exited, status=139)

Feb 10 13:35:39 Mythbox systemd[1]: Starting The Apache HTTP Server...
Feb 10 13:35:40 Mythbox apachectl[6919]: Segmentation fault (core dumped)
Feb 10 13:35:40 Mythbox apachectl[6919]: Action 'start' failed.
Feb 10 13:35:40 Mythbox apachectl[6919]: The Apache error log may have more information.
Feb 10 13:35:40 Mythbox systemd[1]: apache2.service: Control process exited, code=exited, status=139/n/a
Feb 10 13:35:40 Mythbox systemd[1]: apache2.service: Failed with result 'exit-code'.
Feb 10 13:35:40 Mythbox systemd[1]: Failed to start The Apache HTTP Server.
~$ sudo apachectl configtest
Syntax OK

错误日志中没有任何内容,并且日志级别设置为调试,因此无论发生什么,都不会进展到这一步。我试过重新安装 apache2但这并没有什么区别。

此时我不知道该怎么做才能弄清楚到底发生了什么。有什么想法吗?

答案1

凭着直觉,我检查并禁用了所有 apache2 模块,然后慢慢地一个接一个地启用它们,直到找到导致崩溃的模块。

原来是 apache2 尝试加载 php7.4 和 php8.1 导致崩溃。只需加载一个就可以了。

答案2

对于某些升级到新版 Ubuntu 20.04 并因使用 ondrej/php/ubuntu 构建而面临分段错误的人来说,好吧...您需要禁用其中一个 mod_php 或完全禁用它们并使用 php-fpm。这将解决引发的问题。

答案3

我在 Ubuntu 20.0 上安装了 php 7.4,因此 apache2 尝试加载 php7.4 和 php8.1,这导致了崩溃。因此,我从 Ubuntu 20.0 中卸载了 php 版本 8.1,之后 apache 开始正常工作。

答案4

我遇到了类似的问题,错误消息为“Apache apachectl [5465]:段错误(核心转储)”,我设法找到了适合我的解决方案。

就我而言,问题与 php8.2 模块有关。我能够通过使用 a2dismod 命令禁用 php8.2 模块来解决这个问题:

sudo a2dismod php8.2

相关内容