PHP、MYSQL、Apache环境搭建等

部分摘要自官方php手册 https://www.php.net/manual/zh/manual.php

什么是PHP

  • PHP(“PHP: Hypertext Preprocessor”,超文本预处理器的字母缩写)是一种被广泛应用的开放源代码的多用途脚本语言,它可嵌入到 HTML中,尤其适合 web 开发。

  • 与用大量的命令来编写程序以输出 HTML 不同的是,PHP 页面就是 HTML,只不过在其中嵌入了一些代码来做一些事情(在本例中输出了 “Hi, I’m a PHP script!”)。PHP 代码被包含在特殊的起始符和结束符 中,使得可以进出“PHP 模式”。


<html>

<head>

<title>Example</title>

</head>

<body>

  

<?php

echo "Hi, I'm a PHP script!";

?>

  

</body>

</html>

  • 和客户端的 JavaScript 不同的是,PHP 代码是运行在服务端的。如果在服务器上建立了如上例类似的代码,则在运行该脚本后,客户端就能接收到其结果,但他们无法得知其背后的代码是如何运作的。甚至可以将 web 服务器设置成让 PHP 来处理所有的 HTML 文件,这么一来,用户就无法得知服务端到底做了什么。

PHP能做什么

PHP 脚本主要用于以下三个领域:

  1. 服务端脚本:这是 PHP 最传统,也是最主要的目标领域。开展这项工作需要具备以下三点:PHP 解析器(CGI 或者服务器模块)、web 服务器和 web 浏览器。

  2. 命令行脚本:可以编写一段 PHP 脚本,并且不需要任何服务器或者浏览器来运行它。通过这种方式,仅仅只需要 PHP 解析器来执行。

  3. 编写桌面应用程序:对于有着图形界面的桌面应用程序来说,PHP 或许不是一种最好的语言,但是如果用户非常精通 PHP,并且希望在客户端应用程序中使用 PHP 的一些高级特性,可以利用 PHP-GTK 来编写这些程序。用这种方法,还可以编写跨平台的应用程序。


  • 使用 PHP,并不局限于输出 HTML。PHP 还能被用来动态输出图像、PDF 文件甚至 Flash 动画(使用 libswf 和 Ming)。还能够非常简便的输出文本,例如 XHTML 以及任何其它形式的 XML 文件。PHP 能够自动生成这些文件,在服务端开辟出一块动态内容的缓存,可以直接把它们打印出来,或者将它们存储到文件系统中。

  • PHP 最强大最显著的特性之一,是它支持很大范围的数据库。使用任何针对某数据库的扩展(例如 mysql)编写数据库支持的网页非常简单,或者使用抽象层如 PDO,或者通过 ODBC 扩展连接到任何支持 ODBC 标准的数据库。其它一些数据库也可能会用 cURL 或者 sockets,例如 CouchDB。

Apache目录结构

  • htdocs:apache默认的主机地址(网站根目录)

  • modules:apache所有功能都是模块化的

  • \bin\ab.exe:压力测试

  • \conf\http.conf:主配置文件

  • httpd.exe

  1. 服务器进程,运行后才能正常工作

  2. 用来查看apache有哪些功能以及配置文件是否有错


查看使用模块:


httpd -M

Loaded Modules:

core_module (static)

win32_module (static)

mpm_winnt_module (static)

http_module (static)

so_module (static)

access_compat_module (shared)

actions_module (shared)

alias_module (shared)

allowmethods_module (shared)

asis_module (shared)

auth_basic_module (shared)

auth_digest_module (shared)

authn_core_module (shared)

authn_file_module (shared)

authz_core_module (shared)

authz_groupfile_module (shared)

authz_host_module (shared)

authz_user_module (shared)

autoindex_module (shared)

cache_module (shared)

cache_disk_module (shared)

cgi_module (shared)

dir_module (shared)

env_module (shared)

file_cache_module (shared)

include_module (shared)

isapi_module (shared)

log_config_module (shared)

mime_module (shared)

negotiation_module (shared)

rewrite_module (shared)

setenvif_module (shared)

userdir_module (shared)

vhost_alias_module (shared)

php7_module (shared)

static:静态加载apache启动就已经加载好,可以直接使用

share:动态加载,需要使用才会加载

  • 验证配置文件是否有效

httpd -t

Syntax OK

  • 配置默认站点
  1. 让Apache确定服务器上访问的位置:网站文件夹所在位置:httpd.conf下DocumentRoot

  2. 方便用户使用名字访问对应网站:给文件夹取一个别名: httpd.conf下ServerName

  3. 实现DNS

PHP目录结构说明

ext:扩展(PHP很多功能是通过加载扩展实现的)

php.exe:php解释器

  • php.exe 就是可以解析PHP代码转变成HTML代码让浏览器可以解析的

  • 通过php.exe运行命令来指定界限的php脚本即可php.exe f [php文件所在路径]

配置Apache加载PHP模块

  1. 在Apache主配置文件下:loadModule php7_module '[path]'

  2. Apache分配工作给PHP模块:如果是php代码就交给PHP处理(*.php)AddType application/x-httpd-php .php

  3. 将PHP配置文件加载到Apache配置文件中

  4. 在Apache中指定PHP配置文件所在路径 httpd.conf下PHPIniDir '[php.ini路径]'

  5. php.ini文件默认不存在,是以development和production存在,需要格式化

(php.ini文件修改需要重启Apache才能生效)

Mysql目录结构说明

mysql\bin\mysqld.exe:MySQL服务

mysql\bin\mysql.exe:访问MySQL服务的客户端

mysql\bin\mysqldump.exe:MySQL备份软件

C/S结构:client/Server 用户需要安装客户端产品才能访问服务器,而且只能访问一种软件

B/S结构:browser/Server 用户只要安装浏览器,就可以访问所有服务器(B/S架构服务)

PHP连接MySQL数据库

PHP本身不具备操作MySQL数据库的能力,需要借助PHP操作MySQL扩展来实现

  1. PHP加载MySQL扩展

设定PHP系统时区

php.ini中:增加date.timezone ="PRC"

配置虚拟主机

  • 虚拟主机分类
  1. 基于IP的虚拟主机:一台电脑上有多个IP,每个IP对应一个网站

  2. 基于域名的虚拟主机:一台电脑上只有一个IP,但是IP下可以制作多个网站,需要给每个网站不同的名字