我正在运行 Ubuntu 18.04。我有一个 LAMP 设置。在某个时候,我意识到我的 PHP 不再工作了。我已经有一段时间没用它了,所以不幸的是,我无法说出它什么时候停止工作的。很可能是在我从 16.04 升级到 Ubuntu 18.04 的时候。
我在网上搜索了这个问题的答案,但就是没能解决。以下是有关这个问题的信息以及我尝试过的方法:
我重新安装了 Apache2。Apache 本身可以工作,但通过 Apache 运行的 PHP 无法工作:.php 文件显示代码而不是执行代码。或者有时 .php 页面除了页面上的 html 之外完全是空白的。带有 phpinfo(); 函数的页面是空白的。
我正在使用带有以下代码的 .php 页面进行测试:
<h1>My PHP Info Page</h1>
<?php
phpinfo();
?>
我通过 Chrome 浏览器访问此页面:http://localhost/~username/Testing/info.php
只显示短语“我的 PHP 信息页”。页面的其余部分为空白。
我正在使用 php7.2。
当我在终端中输入“php -v”时,我得到:
PHP 7.2.24-0ubuntu0.18.04.10 (cli) (构建于:2021 年 10 月 25 日 17:47:59) (NTS) 版权所有 (c) 1997-2018 The PHP Group Zend Engine v3.2.0,版权所有 (c) 1998-2018 Zend Technologies 和 Zend OPcache v7.2.24-0ubuntu0.18.04.10,版权所有 (c) 1999-2018,由 Zend Technologies 提供
我在终端的不同点运行过这些命令:
sudo a2dismod mpm_event && sudo a2enmod mpm_prefork && sudo a2enmod php7.2
sudo a2enmod php7.2 sudo a2dismod php7.0 sudo a2dismod php5
我已将以下代码添加到 apache2.conf 文件中:
<FilesMatch ".php$"> 设置处理程序应用程序/x-httpd-php
然后我将其改为:
<LocationMatch ".php$"> 设置处理程序应用程序/x-httpd-php
(然后我将其改回来。此外,根据某个地方的建议,我手动输入了此代码,而不是复制和粘贴它。)
每次对 apache2.config 文件进行任何更改后,我都会使用此命令重新启动 Apache 服务:
sudo systemctl restart apache2
我已经束手无策了。为什么我的 PHP 无法运行?
答案1
感谢论坛上一个问题的答案,我找到了问题的答案。问题是我需要编辑 php7.2.config 文件(位于 etc/apache2/mods-enabled 文件夹中),以允许我将所有 .php 文件存储在用户(而不是 root)空间的 public_html 目录中。所以这是一个权限问题。
为了实现这一点,您需要注释掉 php7.2.config 文件末尾以 <IfModule 开头的五行代码。(您可以在注释掉的行开头放置 # 来注释掉代码。)
当我在 16.04 计算机上安装 LAMP 时,我已经在几个 php 版本之前做过这个。显然,由于升级到 php7.2 或升级到 18.04 或升级到 Apache,需要重新做一遍。
完成此更改后,我的 PHP 又可以正常工作了。感谢 ASK UBUNTU!