ubuntu 18.04 LTS:无法启动 Apache HTTP 服务器

ubuntu 18.04 LTS:无法启动 Apache HTTP 服务器

我无法重新启动 apache2 服务。我执行此命令apache2ctl configtest并显示以下错误:

apache2: Syntax error on line 146 of /etc/apache2/apache2.conf: Syntax error on line 2 of /etc/apache2/mods-enabled/php7.0.load: Cannot load /usr/lib/apache2/modules/libphp7.0.so into server: /usr/lib/apache2/modules/libphp7.0.so: cannot open shared object file: No such file or directory
Action 'configtest' failed.
The Apache error log may have more information.

当我执行 apache2 服务启动命令时,它显示以下错误:

apache2.service - The Apache HTTP Server
   Loaded: loaded (/lib/systemd/system/apache2.service; enabled; vendor preset: enabled)
  Drop-In: /lib/systemd/system/apache2.service.d
           └─apache2-systemd.conf
   Active: failed (Result: exit-code) since Sat 2018-10-27 21:39:15 IST; 14s ago
  Process: 24290 ExecStart=/usr/sbin/apachectl start (code=exited, status=1/FAILURE)
 Main PID: 19188 (code=exited, status=0/SUCCESS)

Oct 27 21:39:15 abc systemd[1]: Starting The Apache HTTP Server...
Oct 27 21:39:15 abc apachectl[24290]: apache2: Syntax error on line 146 of /etc/apache2/apache2.conf: Syntax error 
Oct 27 21:39:15 abc apachectl[24290]: Action 'start' failed.
Oct 27 21:39:15 abc apachectl[24290]: The Apache error log may have more information.
Oct 27 21:39:15 abc systemd[1]: apache2.service: Control process exited, code=exited status=1
Oct 27 21:39:15 abc systemd[1]: apache2.service: Failed with result 'exit-code'.
Oct 27 21:39:15 abc systemd[1]: Failed to start The Apache HTTP Server.

如何解决此错误并成功运行apache2?

请帮我。

谢谢。

答案1

就我而言,这是由于 PHP 升级但配置过时而发生的。

尝试以下命令(下面显示的示例适用于 PHP 版本 7.0 和 7.2,请将版本替换为您自己的版本):

a2dismod php7.0
mv /etc/apache2/mods-available/php7.0.conf /etc/apache2/mods-available/php7.2.conf
mv /etc/apache2/mods-available/php7.0.load /etc/apache2/mods-available/php7.2.load

使用文本编辑器编辑/etc/apache2/mods-enabled/php7.2.load并使用 php7.2 更改内容。请检查您的 PHP 版本并正确替换。移动命令并不重要,但最好与版本名称同步。

然后启用 mod 并重新加载 apache。

a2enmod php7.2
service apache2 start

答案2

抱歉,我之前没有询问具体细节,但请对此发表评论,我可以尝试更新这个答案,使其更具体。

这个错误很容易解释。Apache 有一个用于加载附加到服务的模块的结构。在 Ubuntu 上,每个模块都有 3 个重要文件。让我们看看 mpm_prefork 模块,您可能应该已经拥有它。在 /etc/apache2/mods-enabled/ 中,您将找到一个 mpm_prefork.load 和一个 mpm_prefork.conf 文件。

使用 vi 或 nano 读取这些内容,例如nano /etc/apache2/mods-enabled/mpm_prefork.load在这里,您会看到它正在寻找一个名为的配套二进制文件/usr/lib/apache2/modules/mod_mpm_prefork.so。请注意路径与您收到的错误有何相似之处?

因此,就您而言,您似乎有一个 php7.0.load 文件正在寻找。您应该通过列出该目录并查看它在那里吗?/usr/lib/apache2/modules/libphp7.0.so来查看该文件是否确实存在。ls /usr/lib/apache2/modules/

如果没有,那么我建议尝试重新安装 php,这不是最糟糕的主意,因为 php7.0 很快就会被弃用(确切地说是 2018 年 12 月 3 日)。

因此运行以下命令:

dpkg --get-selections | grep php*  # list all php packages installed
sudo apt remove php7.0  # but replace php7.0 with whatever you installed
sudo apt update
sudo apt install php libapache2-mod-php

相关内容