无法运行 php 文件

无法运行 php 文件

我刚刚开始使用 Ubuntu 16.04 Mini,并且刚刚开始使用 PHP。当我创建 php 文件并将其放入目录中/var/www/ubunturock/dummy.php并运行 apache 服务器时,当我转到我的地址时,ubunturock/dummy.php我会获取我的 PHP 代码文件。有什么想法吗?

这也是我的 PHP 代码:

<?php
$servername='localhost';
$username='root';
$password='root';

$schema='demir';

$conn=mysql_connect($servername, $username, $password) or
    die('Connection failed : ' . $conn-> connect_error);

mysql_select_db($schema);

$result=mysql_query('SELECT * FROM topics');

echo '<h1>All Topics</h1><br>';
echo '<table>';
echo '<tr><td>ID</td><td>Name</td></tr>';
while($row = mysql_fetch_assoc($result)){
    echo '<tr>';
    echo '<td>' .$row['id'].'</td>';
    echo '<td>' .$row['name'].'</td>';
    echo '</tr>';
}
echo '</table>';
?>

答案1

Apache 是一个 Web 服务器,因此它基本上可以完成 Web 服务器的职责:您(或您的浏览器)请求一个文件,然后它会将该文件发送给您。Apache 本身并“不知道”此文件包含您希望事先执行的代码。

PHP 由 PHP 解释器执行。您似乎已经安装了该解释器,但您需要将其与 Apache 集成。PHP 脚本的生命周期基本上如下所示(有点拟人化,但这样更容易理解要点)

  • 客户端请求一个以 结尾的文件.php
  • Apache 知道,这些文件需要交给 PHP 解释器。所以它就这么做了。
  • PHP 解释器执行 PHP 代码并生成输出,并将其返回给 Apache。
  • Apache 将该输出发送到客户端。

在当前设置下,Apache 并不“知道”.php文件是否特殊,也不知道如何处理它们。因此,它只是像处理其他文件一样,按原样发送文件。

有几种方法可以将 PHP 解释器与 Apache 集成。您可以使用 Apache 模块mod_php,也可以使用通用网关接口cgi或其较新版本,如fcgiphp-fpm。它们在以下方面有所不同:

  • 设置起来有多容易
  • 他们提供什么样的表现
  • 你可以如何广泛地配置它们
  • 您的设置安全性如何

mod_php如果您只是想要一个服务器来玩玩和实验,只需安装包并重新启动 Apache即可libapache2-mod-php。但是该 SAPI(服务器 API)性能很差,几乎没有配置选项,而且不太安全(主要是因为默认情况下每个 PHP 进程都由同一个系统用户运行)。在生产中或在连接到互联网的服务器上使用它不是一个好主意(这意味着从奥斯陆到廷巴克图的每个人都可以尝试它)。

还有两件事:Ubuntu 16.04 附带 PHP 7。旧的 mysql 函数(例如您正在使用的函数mysql_connect、、mysql_query等等mysql_fetch_assoc)自 PHP 5.0 以来已被弃用(意思是,自十二年前)。在 PHP 7 中它们已被删除,因此您无法再使用它们。您应该使用 mysqli 或 pdo 模块。关于这些的教程很容易找到。

其次,该php软件包包含基本解释器。许多附加模块都打包在自己的软件包中,例如php-mysql您已经安装的软件包。如果您想使用这些模块,则必须安装相应的软件包。

相关内容