您当前的位置:首页 > 计算机 > 编程开发 > PHP

深入了解Apache,PHP和MySQL

时间:03-01来源:作者:点击数:

在正式学习 PHP 语言之前,还需要对 Apache、PHP 和 MySQL 做一些比较深入的说明,这样有助于理解和学习后续内容。本节主要以 Windows 平台下的配置做讲解,Linux/UNIX 平台下的情形与之类似。

1、Apache

Apache(全称:Apache HTTP Server)是 Apache 软件基金会的一个开放源码的网页服务器,可以在大多数计算机操作系统中运行,由于其多平台和安全性被广泛使用,是最流行的 Web 服务器端软件之一。

1) Apache 安装目录

Apache 安装完成后,有一些目录需要我们进一步了解,比如 conf、htdocs、logs 和 modules 这几个目录。

  • conf 目录:存放着一些 Apache 配置文件,其中最常用到的就是 httpd.conf,这是 Apache 的核心配置文件,Apache 服务器的很多重要配置及功能实现都要在这个文件里完成。这个文件也是 PHP 开发人员需要经常改动的文件;
  • htdocs 目录:被 Apache 默认为服务器的根目录。也就是说,在默认情况下,开发人员编写的 HTML 文档和 PHP 程序只有放到这个目录下,才可以被访问或被执行;
  • logs 目录:存放着服务器级别的日志文件。如 access.log 记录用户访问的文件及其访问日期时间、方式等。这个目录下的有些文件有时可以用来做 PHP 程序调试之用,因为服务器在这些日志里记录错误,开发人员可以通过这些错误来调试 PHP 程序;
  • modules 目录:放有 Apache 执行的核心模块,当 Apache 启动时,它会根据配置从这个目录里载入需要的模块。

2) 对 Apache 进行基本的配置

Apache 服务器的很多功能和任务等重要配置,都是通过修改 httpd.conf 来完成的,如设置服务器根目录、服务器超时时间、监听端口、Apache 运行模块的载入等。下面这段内容就是从 httpd.conf 截取的一部分。

# Listen: Allows you to bind Apache to specific IP addresses and/or
# ports, instead of the default. See also the <VirtualHost>
# directive.
#
# Change this to Listen on specific IP addresses as shown below to
# prevent Apache from glomming onto all bound IP addresses.
#
#Listen 12.34.56.78:80

httpd.conf 中,凡是以#号开头的内容都表示注释,也就是说,这些行的内容只是对配置项的一些说明,或者禁用该配置项,被注释的部分 Apache 启动时并不会加载它们。

这里着重介绍几个重要的 Apache 配置项。

① Listen

这个配置项用来绑定 Apache 监听的 IP 地址或端口号。一般情况下,此配置项默认为 80,即 Apache 监听 80 端口,这也是 HTTP 协议所使用的端口。如果电脑上有其他程序占用了这个端口,比如 IIS(它的默认端口也是 80),则可以将 Apache 的监听端口改为 8080 或者其它没有被占用的端口。

② LoadModule

在 httpd.conf 中有很多 LoadModule 项,每一个都是用来载入一个模块。例如载入名为 access_compat_module 模块,其路径为 modules/mod_access_compat.so,载入命令如下:

LoadModule access_compat_module modules/mod_access_compat.so

并不是所有模块都要从 modules 目录下载入,比如要将 PHP 作为一个 Apache 的模块运行,就需要载入有关 PHP 的模块,在 httpd.conf 中加入如下所示的配置,表示从 PHP 的安装目录载入由 Apache 执行的 PHP 模块 php7apache2_4.dll。

LoadModule php7module d:/php/php7apache2_4.dll

如果不需要使用某个模块,或者说关闭某个模块,只需将这个模块的载入配置使用#注释掉就可以了。

③ DocumentRoot

这个配置项用来设置服务器的根目录,默认设置为 Apache 安装目录下的 htdocs 目录。我们可以修改这个配置项的值,进而修改服务器根目录。比如将根目录设置为 D 盘下的 webroot 目录,可以先注释掉默认配置,然后添加新的配置,如下所示。

# DocumentRoot "D:/apache/htdocs"
DocumentRoot "D:/webroot"

这样,对于所有 HTTP 请求,Apache 服务器就会去 D 盘的 webroot 目录下寻找可执行的文件了。

2、PHP

这里介绍的 PHP 是指 PHP 的解释器,它是一种服务端语言解释软件。由 Apache 加载以后,可以使 Apache 拥有解析 php 文件的功能,使得这台服务器可以运行 php 程序。

1) PHP 的核心配置文件 php.ini

与 Apache 相似,PHP 也有自己的核心配置文件 php.ini,PHP 解析器启动时会读取这个文件。与 httpd.conf 不同,php.ini 以英文分号;作为注释符的。这些配置项均在 php.ini 中设置。

PHP 基本的配置项如下所述:

  • doc_root:该项用来指定 PHP 页面在服务器的根目录,例如:doc_root = d:\Apache2\htdocs
  • extension_dir:该项用来指定 PHP 在哪个目录下查找扩展动态库,例如:extension_dir = d:/php/ext

注意:httpd.conf 配置项与其值之间用空格分隔,而 php.ini 则是使用=

2) PHP 文件上传功能的配置

关于文件上传功能的配置,主要有以下两项。

  • upload_tmp_dir:上传文件的临时目录。当进行文件上传时,对于 Linux/UNIX 用户来说,要特别注意临时文件存放的目录,当前 PHP 用户必须拥有这个目录的写权限;
  • upload_max_filesize:指定允许上传文件大小的最大值,默认值是 2MB。

3) PHP中 session 的配置

在 php.ini 中,有关 session 的基本配置有以下 3 项。

  • session.save_handler:用来设置 session 的存储方式,一般使用默认值 files,代表用文件存储;
  • session.save_path:用来设置 session 的保存路径,例如 session.save_path="D:/php/tmp" 表示将 session 保存在 PHP 安装目录的 tmp 目录下;
  • session.use_cookies:用来设置 session 的传递方式,默认是 cookie,推荐使用。

4) PHP 基本的安全设置

这里的安全设置主要是指 PHP 安全模式方面的内容,基本的配置有以下几项。

  • safe_mode:用来设置是否允许 PHP 的安全模式,默认情况下,此项配置的值为 Off,即关闭安全模式;
  • safe_mode_exec_dir:表示安全模式下,系统可执行系统程序的目录。这个配置项取决于 safe_mode 项,如果 PHP 运行于安全模式下,一些系统函数将会拒绝执行不在该目录下的系统程序。

3、MySQL

MySQL 是一种开放源代码的关系型数据库管理系统(RDBMS),使用最常用的数据库管理语言(结构化查询语言(SQL))进行数据库管理。

MySQL 会把所有数据以文件的形式存储在 MySQL 安装目录的 data 目录下。开发人员可以通过 MySQL 创建许多数据库,每创建一个数据库,就会在 data 目录下生成一个子目录。这个子目录的名字就是数据库的名字,在这些子目录下存放的就是真正的数据文件。

PHP 和 MySQL 之间只是调用和被调用的关系,不需要什么额外的配置,PHP 通过 SQL 语句来操作 MySQL 完成一系列的数据操作,在此期间 MySQL 数据库一直是被动的接受并执行操作指令。

PHP 是如何操作 MySQL 数据库的

PHP 与 MySQL 交互使用的语言规则是 SQL,但是 PHP 和 MySQL 是两个独立的应用程序,想要交互必须得先建立连接,就如同浏览器访问 Web 服务器一样,在请求数据发送之前也需要先成功建立 tcp 连接。

PHP 脚本与 MySQL 建立连接的过程都是由 PHP 的 MySQLi 或者 PDO 等驱动来完成的,这些驱动的本质都是 PHP 的模块,即 PHP 解释器可以识别的相关函数集合,一般使用C语言编写,对 PHP 来说,屏蔽了具体连接建立和数据库协议操作的详细过程,只对外暴露了一些基础的接口,即 PHP 可以调用到的一些数据库操作函数,如连接数据库、执行数据库 SQL 命令、断开连接等等。

总而言之,PHP 调用 MySQL 数据库的过程,通常是通过 PHP 的数据库驱动模块来操作的,它的本质也是一个网络数据的请求操作,遵循 MySQL 通信协议来建立连接,使用 SQL 语法来执行具体操作指令。

方便获取更多学习、工作、生活信息请关注本站微信公众号城东书院 微信服务号城东书院 微信订阅号
推荐内容
相关内容
栏目更新
栏目热门