如何在Apache中启用PHP7模块?

40

当我尝试运行a2enmod php7.0时,我收到了“考虑将php5与php7.0冲突”的消息。

重启apache后 - apache无法启动。

如何解决这个问题?

也许一些已经启用的模块链接到了php5?

参数: Ubuntu Wily, Apache 2.4.18, PHP 7.0.4(仅在cli中工作)


是的,您需要移除和清除php5以避免冲突。 - molivier
3个回答

79
首先,禁用php5模块:
a2dismod php5

然后,启用 php7 模块:
a2enmod php7.0

接下来,重新加载/重启Apache服务:

service apache2 restart

更新于2018-09-04

关于评论,您需要指定已安装的版本。


是的 - 这是一个好的解决方案。我已经尝试过了...但是我没有php5模块,因为我删除了所有带有php5的软件包。在执行“a2enmod php7.0”之后,我无法启动我的apache。 - YanDatsiuk
2
@YanDatsyuk 运行以下命令 sudo apachectl -t,查看是否有语法错误。 - hjpotter92
确保在启用php时提供正确的版本号。例如,对于php 7.1版本,请使用a2enmod php7.1,对于php 7.2版本,请使用a2enmod php7.2。否则,您可能会遇到错误,如Cannot load /usr/lib/apache2/modules/libphp7.0.so,并且无法重新启动apache服务器。 - Jacob Nelson
两年前还只有7.0版本 @JacobNelson,我会根据你的评论更新回复。 :) 谢谢 - hjpotter92
毕竟,您也可以执行以下操作:systemctl restart apache2 - robe007

35

我在以下线程中找到了解决方案:https://askubuntu.com/questions/760907/upgrade-to-16-04-php7-not-working-in-browser

在我的情况下,不仅 PHP 不起作用,而且 PHPMyAdmin 也不起作用,我按照步骤进行了操作。

sudo apt install php libapache2-mod-php
sudo apt install php7.0-mbstring
sudo a2dismod mpm_event
sudo a2enmod mpm_prefork
service apache2 restart

然后到:

gksu gedit /etc/apache2/apache2.conf

如果这个解决方案能够解决您的问题,请在原帖中点赞。


2
我还启动了 sudo a2enmod php7.0 然后重新启动了 Apache。 - IlGala
我已经为此问题苦苦思索了好几天。但是,这个方法解决了我的“Apache正在运行线程化的MPM,但你的PHP模块没有编译成线程安全”的错误。 - Heres2u

1

对于寻找同样问题解决方案的Windows用户。我只是替换了

LoadModule php7_module "C:/xampp/php/php7apache2_4.dll"

在我的/conf/extra/httpв-xampp.conf中。

是的,我知道它可能会破坏其他模块的依赖关系(尽管我没有遇到过),但如果您决定投反对票,请在评论中描述您的问题以供进一步考虑。 - vladkras

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接