目录序相关配置下载背景测试环境安装之前的注意事项Apache 安装与配置Apache 配置文件(Apache24/conf/httpd.conf)虚拟主机配置文件 (Apache24/extra/httpd-vhosts.conf)PHP 安装与配置下载 PHPThread Safe 和 Non Thread Safe 的 区别配置 php.ini检查配置安装 Apache 服务并启动MySQL 安装下载 MySQL 最新版新建 My.ini 配置文件安装 MySQL 服务并启动一些问题相关脚注解释
序
PHP 环境,是 HTTP 服务器、PHP 和 数据库软件的集合体,一般可以简写成 LAMP[1],即 Linux + Apache + MySQL+ PHP 组合而成。
通常一般学习或者小型项目,可以直接使用 集成环境 形如:PHPStudy ,XAMPP 诸如此类的 “All in One” 环境。
但如果需要进行大型项目或者对配置文件有较高 DIY 需求,也允许直接按模块[2]进行安装配置,本文按 Windows 10 环境进行原生模块安装 PHP 环境。
相关配置下载
如果想直接套用本文的配置,也提供链接下载:蓝奏云
PHP 8.0 版本发布,本文编写的配置环境是 7.4,只需要小部分修改就可以使用。
背景
编者刚开始学习 PHP 时用的是 PHPStudy,之后接触到许多集成环境,虽然各有千秋、百家争鸣,总觉得集成环境有一种“束缚”捆绑,直接从官网下载最新版使用,切实地从配置文件入手,让人安心许多。
测试环境
Windows 10 20H2 专业版 x64 (19042.572)
Intel(R) Core(TM) i5-7300HQ CPU @ 2.50GHz
Hyper Terminal (可选)
默认环境安装在 D:\PHPEnv\目录下
安装之前的注意事项
涉及 Windows 服务的安装,可能需要 VC15 运行库,可以在微软官网按需下载,也可以直接安装 运行库合集。
Apache 安装与配置
Apache 官网 只提供 windows 版的源码,不提供二进制可执行文件 [3],我们可以去 Apache Haus 下载二进制文件进行安装。
点击 Download Locations下任意一个图标即可下载,注意 32 位和 64 位的区别[4],一般新 CPU 大多数是 64 位 CPU,如编者的 i5 7代核心是 64 位 CPU,可以兼容 32位 的程序。
得到一个 zip压缩包,形如:
将 Apache24 目录解压到 D:\PHPEnv 下,环境根目录可以任意指定,需要注意目录路径不允许出现中文。
Apache 配置文件(Apache24/conf/httpd.conf)
由于 Apache 配置文件过于冗长,具体详细调教方法可以参考其他文章,这里展示缩减后的配置文件(这里只展示主要部分,完整配置请下载使用,具体请参看 相关配置下载)。
# Apache24.conf file
# General Settings
Define SRVROOT "D:/PHPEnv/Apache24" # 定义Apache 根目录
ServerRoot "${SRVROOT}"
ServerName localhost # 服务名
Define ENABLE_TLS13 "Yes"
Listen 80 # 监听80端口,如果被占用可以使用 8080 端口
# PHP74 Config
# PHP 8.0 修改为 php8apache2_4.dll
LoadModule php_module "D:/PHPEnv/PHP74/php7apache2_4.dll" # 定义 PHP7 模块路径
AddType Application/x-httpd-php .php # 添加 PHP格式
PHPIniDir "D:/PHPEnv/PHP74" #定义 PHP 根目录
AllowOverride all
Options Indexes FollowSymLinks
Require all granted
AllowOverride all
Options Indexes FollowSymLinks
Require all granted
DirectoryIndex index.html index.php index.htm
Require all granted
# Virtual hosts
Include conf/extra/httpd-vhosts.conf # 启用虚拟主机文件
虚拟主机配置文件 (Apache24/extra/httpd-vhosts.conf)
为了方便,将网站根目录映射成虚拟主机,原是允许一个服务器运行多个网站的设计。
ServerAdmin localhost
DocumentRoot "H:/WWW"
ServerName localhost
Options Indexes FollowSymLinks Includes ExecCGI
PHP 安装与配置
下载 PHP
由于 Apache 的 安装需要事先配置好 PHP,前往 windows.php.net 下载最新版。
近期发布了 PHP 8.0,本文撰写时版本还未发布,所以只介绍 7.4 版。
Thread Safe 和 Non Thread Safe 的 区别
参考原文:
TS refers to multithread capable builds. NTS refers to single thread only builds. Use case for TS binaries involves interaction with a multithreaded SAPI and PHP loaded as a module into a web server. For NTS binaries the widespread use case is interaction with a web server through the FastCGI protocol, utilizing no multithreading (but also for example CLI).
大致意思是 TS 版以模块 (moudule) 方式加载到网站服务器(Apache),NTS 版通过 FastCGI 协议与网站服务器建立联系。前者大多应用于 Apache,后者搭配 Nginx 使用,本文使用 Thread Safe 版以模块形式使用 PHP(上图 VC15 x64 Thread Safe)。
下载后如图:
将压缩包所有文件解压到 D:\PHPEnv\PHP74,路径与 httpd.conf 配置要一致。
配置 php.ini
在 PHP根目录(PHP74)新建 php.ini,或者复制 php.ini-development 重命名为 php.ini,右键选择编辑进入配置文件,同样由于篇幅限制只展示一部分主要配置,具体请参看 相关配置下载。
[PHP]
engine = On # 启动引擎
short_open_tag = Off # 关闭短标签
max_input_time = 60
memory_limit = 128M
error_reporting = E_ALL # 错误报告开启全部提示
post_max_size = 2048M # POST 最大文件大小
default_mimetype = "text/html"
default_charset = "UTF-8" # 默认文件编码
extension_dir = "./"
extension_dir = "D:/PHPEnv/PHP74/ext" # PHP 插件路径
enable_dl = Off
upload_max_filesize = 2048M # 上传最大文件大小
max_file_uploads = 20
extension=curl
extension=fileinfo
extension=gd2
extension=mbstring
extension=mysqli
extension=pdo_mysql
extension=sockets
[Date]
date.timezone = Asia/Shanghai # 默认时区设置(中国上海)
[mail function]
SMTP = localhost
smtp_port = 25
mail.add_x_header = Off
[mbstring]
mbstring.language = Chinese # 检查字数语言(中文)
检查配置
管理员身份打开 Hyper Terminal 或 命令提示符(任意一个 Terminal 都可以),cd 命令跳转到 Apache24\bin,Windows 跳转盘符命令 D: (D 是目标盘符,其他形如 C: E:,参考机器配置)。
检查 Apache 配置 httpd -t,显示 Syntax OK 说明配置无误。
安装 Apache 服务并启动
httpd -k install -n Apache24 进行安装,-n 后面跟服务名(可以自己定义),不填默认为 Apache2.4
net start Apache24 开启服务。
至此 Apache 和 PHP 已经安装完成,在网站根目录(H:\WWW)新建 phpinfo.php,
输入 保存,进入浏览器输入 localhost\phpinfo.php 查看效果。
MySQL 安装
下载 MySQL 最新版
前往 MySQL官网 下载 MySQL,官网提供两种安装方式:
安装器[5] MySQL Installer for Windows.msi
归档压缩包 Windows (x86, 64-bit), ZIP Archive
本文选择压缩包安装,选择右边 download 按钮下载
下载后得到如图文件内容:
新建 My.ini 配置文件
相对于 Apache 和 PHP 的天花乱坠的配置文件,MySQL 文件相对简洁许多。
[mysqld]
port=3306 #端口
basedir=D:\PHPEnv\MySQL80 #根目录
datadir=D:\PHPEnv\MySQL80\Data #数据库目录
max_connections=200 #最大链接数
max_connect_errors=10
character-set-server=utf8mb4 #字符编码,mb4支持 emoji
default-storage-engine=INNODB #数据库引擎
default_authentication_plugin=mysql_native_password
[mysql]
default-character-set=utf8mb4 #数据库字符集
[client]
port=3306
default-character-set=utf8mb4
保存至 MySQL 根目录,本文保存至 PHPEnv\MySQL80,新建 Data 空文件夹。
安装 MySQL 服务并启动
在终端或命令提示符(管理员模式)定位到 MySQL80 下的 bin 目录 cd MySQL80\bin
输入 mysqld --initialize --console 初始化安装,得到一个初始密码:
上图 A temporary password is generated for root@localhsot: 除去空格就是初始密码,需要记住。
继续输入 mysqld --install MySQL80 安装服务,提示 Service successfully installed 表示安装成功。
输入 net start MySQL80 启动数据库服务。
输入 mysql -u root -p 进入 MySQL CLI,回车提示输入初始密码,进行密码设定:
输入 ALTER USER 'root'@'localhost' IDENTIFIED BY '密码';
密码自己写,提示 Query OK, 0 rows affected (0.10 sec) 说明已经完成修改。
输入 exit; 退出,再次进入就可以使用新密码了。
至此,所有配置已完成,可以使用了。
一些问题
一般注意 以管理员身份运行 打开终端,事先安装 VC15 就没有问题了。
相关脚注解释
LAMP 只是一种简写形式,依操作系统和服务软件不同可以有形如 WAMP LNAMP等情况 ↩︎
模块指将 LAMP 各部件独立出来的一种说辞,相对于 “集成环境” 而言,后面的原生模块也指此类说法 ↩︎
网站原文:The Apache HTTP Server Project itself does not provide binary releases of software, only source code. Individual committers may provide binary packages as a convenience, but it is not a release deliverable.If you cannot compile the Apache HTTP Server yourself, you can obtain a binary package from numerous binary distributions available on the Internet. ↩︎
32 位环境和 64 位环境的区别,参考维基百科有如下解释:从 32 位到 64 位架构的改变是一个根本的改变,因为大多数操作系统必须进行全面性修改,以获取新架构的优点。其它软件也必须进行移植,以使用新的性能;较旧的软件一般可借由硬件兼容模式(新的处理器支持较旧的 32 位版本指令集)或软件模拟进行支持。或者直接在 64 位处理器里面实现 32 位处理器核心(如同 Intel 的 Itanium 处理器,其内含有 x86 处理器核心,用来运行 32 位 x86 应用程序)。支持 64 位架构的操作系统,一般同时支持 32 位和 64 位的应用程序。 ↩︎
MySQL 安装器的方式也适合小白使用,具体安装方式参考其他文章。 ↩︎