深入了解Apache,PHP和MySQL

在正式学习 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 语法来执行具体操作指令。

原创文章,作者:奋斗,如若转载,请注明出处:https://blog.ytso.com/23956.html

(0)
上一篇 2021年7月20日
下一篇 2021年7月20日

相关推荐

发表回复

登录后才能评论