升级到Ubuntu 22.04 LTS后Apache 2无法启动-无法加载/usr/lib/apache 2/moduleslibphp8.0.so

0pizxfdo  于 2022-11-16  发布在  Apache
关注(0)|答案(5)|浏览(119)

对于如何修复这个问题,我有点卡住了。我做了一个发行版升级了一个运行Apache2的服务器。
自从升级以来,它一直不起作用。我运行了一个配置测试,下面是错误。我在以前版本的Ubuntu(21. 10)上的配置没有问题

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

有什么想法从哪里开始吗?我仍然相当缺乏经验,当谈到Apache。
谢谢你的帮助。

bt1cpqcv

bt1cpqcv1#

当你想通了这一点,其他人会来(像我一样)看看你是如何做到这一点。

# perhaps you did the following to see what modules were present
> apache2ctl -M

# the result of the above command may have returned an error such as:
apache2:
 Syntax error on line 146 of /etc/apache2/apache2.conf:
  Syntax error on line 2 of /etc/apache2/mods-enabled/php8.0.load:
   Cannot load /usr/lib/apache2/modules/libphp8.0.so into server:
    /usr/lib/apache2/modules/libphp8.0.so:
     cannot open shared object file: No such file or directory
Action '-M' failed.

# so you removed the problematic module that was no longer installed
# by doing the following (as appropriate given the error above)
> sudo a2dismod php8.0

# you needed to restart your server after that
> sudo systemctl restart apache2

# if you tested the server in a browser html should function...
# however you perhaps desired the use of another php module
# and added another one (8.1) that is install by default in Ubuntu 22.04
> sudo a2enmod php8.1

# you restarted apache again and it worked?
> sudo systemctl restart apache2

也许您正在使用mod_userdir,并且还需要更新apache php模块配置文件:
/etc/apache2/mods-enabled/php8.1.conf
通过注解掉以下行:

<IfModule mod_userdir.c>
    <Directory /home/*/public_html>
        php_admin_flag engine Off
    </Directory>
</IfModule>

所以他们看起来像这样:
第一次
你做过类似的事吗?

pengsaosao

pengsaosao2#

别管其他人了。我知道了。
我检查了/usr/lib/apache 2/modules/,发现libphp8.0.so已经更新为libphp8.1.so。
在修改mods-enabled以包括这个文件而不是有问题的文件之后,apache启动时没有任何问题。

vu8f3i0k

vu8f3i0k3#

在我的例子中,我升级了Ubuntu 20.04 to 22.04。所以向导卸载了php7.4模块,并安装了php8.1模块。之后,我试图重新启动apache 2,但它没有。我意识到在我的/etc/apache 2/mods-enabled文件夹中,我仍然有php7.4.confphp7.4.loadphp7.4.load仍然指向libphp7.4.so
记住mods-enabled文件夹是从mods-available文件夹生成的,所以你永远不要改变mods-enabled文件夹。相反,你应该禁用php7.4模块:

sudo a2dismod php7.4

和启用php8.1模块:

sudo a2enmod php8.1

当然,在启用php8.1模块之后,您必须重新启动apache 2服务。

sudo systemctl restart apache2
pexxcrt2

pexxcrt24#

sudo gedit /etc/apache2/mods-enabled/php8.0.load

和重命名:

LoadModule php_module /usr/lib/apache2/modules/libphp8.0.so

至:

LoadModule php_module /usr/lib/apache2/modules/libphp8.1.so
vpfxa7rd

vpfxa7rd5#

操作 系统 升级 到 Ubuntu 22 会 将 已 安装 的 php 7.x 更新 到 php8.x , 但 不会 修复 Apache2 配置
php7.4 中 的 一 个
sudo a2enmod php8.1 的 开发 过程
php7.4 - fpm 中 的 一 个 参数
php8.1 - fpm 中 的 一 个 或 多 个
sudo systemctl 重新 加载 apache2

相关问题