我最近运行了一个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