如何在 apache2 - ubuntu 上托管 .php 文件?

How to host .php files on apache2 - ubuntu?

我正在 google 云上托管我的 maturita 考试网络应用程序。所以我创建了 VM(运行 on ubuntu)并在其上安装了 apache2。然后我就成功安装了PHP。问题是,即使我正确安装了 PHP,它也仅托管 .html 文件。当我尝试托管 .php 文件时,将出现 HTTP 错误 500。 phpinfo.php 是唯一有效的文件。

<?php phpinfo(); ?>

我的问题是。如何更改 Google 云 ubuntu 上的 Apache 配置?

HTTP 500 错误可能是由您的 Apache 配置问题引起的。如果您的代码生成 500 错误,请检查以确保它们在它们所在的目录中具有 运行 的权限。 Apache 默认不允许程序执行。因此,请尝试使用 CHMOD 为您的虚拟主机目录授予权限。

关于错误的更多详细信息,您应该查看 Apache 错误日志,例如:

tail -f /var/log/apache2/error.log

PHP 是您的设置组件,它将处理代码以显示动态内容。它可以 运行 脚本,连接到您的 MySQL 数据库以获取信息,并将处理后的内容交给您的网络服务器进行显示。

再次利用apt系统安装PHP。此外,这次包含一些帮助程序包,以便 PHP 代码可以在 Apache 服务器下 运行 并与您的 MySQL 数据库对话:

sudo apt install php libapache2-mod-php php-mysql

这应该可以毫无问题地安装 PHP。我们稍后会对此进行测试。

在大多数情况下,您需要修改 Apache 在请求目录时提供文件的方式。目前,如果用户从服务器请求目录,Apache 将首先查找名为 index.html 的文件。我们想告诉 Web 服务器优先选择 PHP 文件而不是其他文件,因此让 Apache 首先查找 index.php 文件。

为此,请键入此命令以在具有根权限的文本编辑器中打开 dir.conf 文件:

sudo nano /etc/apache2/mods-enabled/dir.conf 它看起来像这样:

/etc/apache2/mods-enabled/dir.conf

<IfModule mod_dir.c>
    DirectoryIndex index.html index.cgi index.pl index.php index.xhtml index.htm
</IfModule>

将 PHP 索引文件(上面突出显示的)移动到 DirectoryIndex 规范之后的第一个位置,如下所示:

/etc/apache2/mods-enabled/dir.conf

<IfModule mod_dir.c>
    DirectoryIndex index.php index.html index.cgi index.pl index.xhtml index.htm
</IfModule>

完成后,按 CTRL+X 保存并关闭文件。通过键入 Y 确认保存,然后按 ENTER 以验证文件保存位置。

在此之后,重新启动 Apache 网络服务器以便识别您的更改。通过键入以下内容来执行此操作:

sudo systemctl restart apache2

您还可以使用 systemctl 检查 apache2 服务的状态:

sudo systemctl status apache2