我无法重新启动 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\nAction 'configtest' failed.\nThe Apache error log may have more information.\n
Run Code Online (Sandbox Code Playgroud)\n\n当我执行 apache2 服务启动命令时,它显示以下错误:
\n\napache2.service - The Apache HTTP Server\n Loaded: loaded (/lib/systemd/system/apache2.service; enabled; vendor preset: enabled)\n Drop-In: /lib/systemd/system/apache2.service.d\n \xe2\x94\x94\xe2\x94\x80apache2-systemd.conf\n Active: failed (Result: exit-code) since Sat 2018-10-27 21:39:15 IST; 14s ago\n Process: 24290 ExecStart=/usr/sbin/apachectl start (code=exited, status=1/FAILURE)\n Main PID: 19188 (code=exited, status=0/SUCCESS)\n\nOct 27 21:39:15 abc systemd[1]: Starting The Apache HTTP Server...\nOct 27 21:39:15 abc apachectl[24290]: apache2: Syntax error on line 146 of /etc/apache2/apache2.conf: Syntax error \nOct 27 21:39:15 abc apachectl[24290]: Action 'start' failed.\nOct 27 21:39:15 abc apachectl[24290]: The Apache error log may have more information.\nOct 27 21:39:15 abc systemd[1]: apache2.service: Control process exited, code=exited status=1\nOct 27 21:39:15 abc systemd[1]: apache2.service: Failed with result 'exit-code'.\nOct 27 21:39:15 abc systemd[1]: Failed to start The Apache HTTP Server.\n
Run Code Online (Sandbox Code Playgroud)\n\n如何解决这个错误并成功运行apache2?
\n\n请帮我。
\n\n谢谢。
\n就我而言,这是由于 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
Run Code Online (Sandbox Code Playgroud)
用文本编辑器编辑/etc/apache2/mods-enabled/php7.2.load
,用php7.2更改内容。请检查您的PHP版本并正确替换。移动命令并不重要,但最好与版本名称同步。
然后启用 mod 并重新加载 apache。
a2enmod php7.2
service apache2 start
Run Code Online (Sandbox Code Playgroud)
很抱歉没有事先询问具体细节,但对此发表评论,我可以尝试更新此答案以使其更具体。
这个错误是不言自明的。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
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
18723 次 |
最近记录: |