深入了解Apache,PHP和MySQL
在正式学习 PHP 语言之前,还需要对 Apache、PHP 和 MySQL 做一些比较深入的说明,这样有助于理解和学习后续内容。本节主要以 Windows 平台下的配置做讲解,Linux/UNIX 平台下的情形与之类似。
这里着重介绍几个重要的 Apache 配置项。
PHP 基本的配置项如下所述:
MySQL 会把所有数据以文件的形式存储在 MySQL 安装目录的 data 目录下。开发人员可以通过 MySQL 创建许多数据库,每创建一个数据库,就会在 data 目录下生成一个子目录。这个子目录的名字就是数据库的名字,在这些子目录下存放的就是真正的数据文件。
PHP 和 MySQL 之间只是调用和被调用的关系,不需要什么额外的配置,PHP 通过 SQL 语句来操作 MySQL 完成一系列的数据操作,在此期间 MySQL 数据库一直是被动的接受并执行操作指令。
PHP 脚本与 MySQL 建立连接的过程都是由 PHP 的 MySQLi 或者 PDO 等驱动来完成的,这些驱动的本质都是 PHP 的模块,即 PHP 解释器可以识别的相关函数集合,一般使用C语言编写,对 PHP 来说,屏蔽了具体连接建立和数据库协议操作的详细过程,只对外暴露了一些基础的接口,即 PHP 可以调用到的一些数据库操作函数,如连接数据库、执行数据库 SQL 命令、断开连接等等。
总而言之,PHP 调用 MySQL 数据库的过程,通常是通过 PHP 的数据库驱动模块来操作的,它的本质也是一个网络数据的请求操作,遵循 MySQL 通信协议来建立连接,使用 SQL 语法来执行具体操作指令。
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
#
号开头的内容都表示注释,也就是说,这些行的内容只是对配置项的一些说明,或者禁用该配置项,被注释的部分 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"
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 语法来执行具体操作指令。
所有教程
- C语言入门
- C语言编译器
- C语言项目案例
- 数据结构
- C++
- STL
- C++11
- socket
- GCC
- GDB
- Makefile
- OpenCV
- Qt教程
- Unity 3D
- UE4
- 游戏引擎
- Python
- Python并发编程
- TensorFlow
- Django
- NumPy
- Linux
- Shell
- Java教程
- 设计模式
- Java Swing
- Servlet
- JSP教程
- Struts2
- Maven
- Spring
- Spring MVC
- Spring Boot
- Spring Cloud
- Hibernate
- Mybatis
- MySQL教程
- MySQL函数
- NoSQL
- Redis
- MongoDB
- HBase
- Go语言
- C#
- MATLAB
- JavaScript
- Bootstrap
- HTML
- CSS教程
- PHP
- 汇编语言
- TCP/IP
- vi命令
- Android教程
- 区块链
- Docker
- 大数据
- 云计算