我刚刚开始使用 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
或其较新版本,如fcgi
或php-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
您已经安装的软件包。如果您想使用这些模块,则必须安装相应的软件包。