我最近不得不在 Ubuntu 20.10 上卸载并重新安装 LAMP 堆栈。一切似乎都进展顺利,只是 PHP 代码未被解释。似乎未加载 PHP 模块。
下面序列末尾的重新启动没有任何区别。
所以看起来好像我需要在 apache 配置文件中添加一些内容,但我不太了解配置文件在 Ubuntu 上的工作方式。
有人可以帮忙吗?
Leyendo lista de paquetes... Hecho
Creando árbol de dependencias
Leyendo la información de estado... Hecho
Se instalarán los siguientes paquetes NUEVOS:
libapache2-mod-php php
0 actualizados, 2 nuevos se instalarán, 0 para eliminar y 0 no actualizados.
Se necesita descargar 5,676 B de archivos.
Se utilizarán 30.7 kB de espacio de disco adicional después de esta operación.
Des:1 http://gb.archive.ubuntu.com/ubuntu groovy/main amd64 libapache2-mod-php all 2:7.4+76 [2,904 B]
Des:2 http://gb.archive.ubuntu.com/ubuntu groovy/main amd64 php all 2:7.4+76 [2,772 B]
Descargados 5,676 B en 2s (2,728 B/s)
Seleccionando el paquete libapache2-mod-php previamente no seleccionado.
(Leyendo la base de datos ... 530220 ficheros o directorios instalados actualmen
te.)
Preparando para desempaquetar .../libapache2-mod-php_2%3a7.4+76_all.deb ...
Desempaquetando libapache2-mod-php (2:7.4+76) ...
Seleccionando el paquete php previamente no seleccionado.
Preparando para desempaquetar .../php_2%3a7.4+76_all.deb ...
Desempaquetando php (2:7.4+76) ...
Configurando php (2:7.4+76) ...
Configurando libapache2-mod-php (2:7.4+76) ...
peter@peter-HP-Pavilion-15-Notebook-PC:~/websites/test$ a2query -m php
No module matches php
peter@peter-HP-Pavilion-15-Notebook-PC:~/websites/test$ a2query -m php7
No module matches php7
peter@peter-HP-Pavilion-15-Notebook-PC:~/websites/test$ php -v
PHP 7.4.9 (cli) (built: Oct 26 2020 15:17:14) ( NTS )
Copyright (c) The PHP Group
Zend Engine v3.4.0, Copyright (c) Zend Technologies
with Zend OPcache v7.4.9, Copyright (c), by Zend Technologies
with Xdebug v2.9.6, Copyright (c) 2002-2020, by Derick Rethans
peter@peter-HP-Pavilion-15-Notebook-PC:~/websites/test$ a2query -m php7.4
No module matches php7.4
peter@peter-HP-Pavilion-15-Notebook-PC:~/websites/test$ apachectl configtest
AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1. Set the 'ServerName' directive globally to suppress this message
Syntax OK
peter@peter-HP-Pavilion-15-Notebook-PC:~/websites/test$ sudo systemctl restart apache2
peter@peter-HP-Pavilion-15-Notebook-PC:~/websites/test$
答案1
您需要先通过 安装 PHP sudo apt install libapache2-mod-phpX.Y
(以防缺失),然后使用 启用它sudo a2enmod phpX.Y
。重新启动apache2
后 PHP 应该可以正常工作。
如果你想启用 HTTP2 支持sudo apt install phpX.Y-fpm
:sudo a2enmod proxy_fcgi
答案2
终于解决了。答案是禁用 mpm_event。然后就可以加载 PHP 模块了。
sudo a2dismod mpm_event
systemctl restart apache2
sudo a2enmod php7.4
不幸的是,无法重新加载 mpm_event。尝试这样做会返回另一个错误,提示与 mpm_prefork 发生冲突。
尽管如此,apache2 重新启动后一切正常,并且能够与我用于测试的非常基本的 PHP 页面配合使用。未来我是否会因为 mpm_event 未加载而遇到问题,还有待观察。