目录
前言1. PHP 的下载、安装和配置1.1 下载 php1.2 安装 php1.3 配置 php 系统变量1.4 配置 php.ini
2. Apache 的下载、安装和配置2.1 下载 Apache2.2 安装 Apache2.3 修改配置 Apache2.4 指定服务端口(非必须)2.5 配置系统变量2.6 安装服务2.7 Apache 环境开启 htaccess 伪静态(可选)2.8 启动服务
3. 整合 PHP、Apache3.1 配置 apache 支持 php3.2 修改网站默认首页3.3 修改Apache 默认的站点目录3.4 测试 php 网站
4. 安装 php 依赖管理工具:Composer4.1 下载 Composer4.2 安装 Composer:方式一4.3 安装 Composer:方式二4.4 更改 Composer 镜像
5. VsCode 配置5.1 安装 vs code 插件5.2 下载和配置 Xdebug 库5.3 调试运行 debug
6. MySQL在Windows 环境中的安装7. 附:Xdebug3 参数说明7.1 xdebug.mode7.2 start_with_request
前言
最近有空整理一下php 在windows上面的环境配置。原因是发现网上大多数php环境配置的相关帖子内容凌乱、多数是不能配置成功的。所以决定全部走一遍配置,以确保整个过程是成功的。并在此基础上开个帖子记录下这个完整的安装和配置过程,以备忘和供有需要的同学参考。
1. PHP 的下载、安装和配置
1.1 下载 php
官方下载地址:https://windows.php.net/downloads/releases/
我这里没有下载最新版,而是 php-7.4.33-Win32-vc15-x64.zip
1.2 安装 php
将下载的 zip 压缩包解压到安装目录: E:\Software\PHProgram\PHP(我的位置)
1.3 配置 php 系统变量
将 PHP 的安装目录(如 E:\Software\PHProgram\PHP)添加到 系统变量 的 Path 变量中:
1.4 配置 php.ini
将 PHP 目录下的php.ini-development,复制一份并重命名为 php.ini,作为PHP的配置文件。
编辑php.ini文件:
设置PHP扩展包的具体目录
找到:
; On windows:
; extension_dir = “ext”
修改为:
; On windows:
extension_dir = “E:\Software\PHProgram\PHP\ext”
开启相应的库功能
搜索 “;extension= ”,定位并开启所需的库功能:
设置时区
找到
;date.timezone =
修改为:
date.timezone = Asia/Shanghai
检查是否安装成功
cmd 中输入检查版本的命令:
php -v
2. Apache 的下载、安装和配置
2.1 下载 Apache
安装包官方下载地址:https://www.apachelounge.com/download/VS16/
下载的 ZIP 文件是:httpd-2.4.57-win64-VS16.zip
2.2 安装 Apache
将下载的zip 文件解压到 E:\Software\PHProgram\Apache-2.4.57\Apache24
2.3 修改配置 Apache
找到 Apache24\conf 目录下的 httpd.conf 文件,用记事本打开,并转到 Define SRVROOT “c:/Apache24” 修改为:
# ServerRoot at a non-local disk, be sure to specify a local disk on the
# Mutex directive, if file-based mutexes are used. If you wish to share the
# same ServerRoot for multiple httpd daemons, you will need to change at
# least PidFile.
#
Define SRVROOT "E:\Software\PHProgram\Apache2.4.57\Apache24"
ServerRoot "${SRVROOT}"
#
# Mutex: Allows you to set the mutex mechanism and mutex file directory
2.4 指定服务端口(非必须)
定位到 Listen 80,改为其它端口
# 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
Listen 8888
#
# Dynamic Shared Object (DSO) Support
Apache 默认端口为80,为避免端口冲突,可修改为其他端口。如使用默认80端口,则通过http://localhost 即可访问,如使用修改后的端口,则必须加端口号:如 http://localhost:8888
2.5 配置系统变量
2.6 安装服务
必须以 管理员身份 运行 cmd ,然后进入 Apache\bin 目录
C:\WINDOWS\system32> e:
E:\> cd Software\PHProgram\Apache-2.4.57\Apache24\bin
E:\Software\PHProgram\Apache-2.4.57\Apache24\bin> httpd -k install -n Apache2.4
如果要移除服务:cmd 中输入 sc delete Apache2.4 后回车
2.7 Apache 环境开启 htaccess 伪静态(可选)
什么是伪静态 ? 伪静态其实是相对真实静态来讲的,伪静态只是改变了URL的显示形式,实际上还是一个动态的页面。伪静态的页面后缀可以是html、htm或者是目录格式等。像thinkphp等框架的pathinfo模式,也是伪静态的一种。
为什么要用伪静态 ? Ⅰ为了seo优化,伪静态有利于搜索引擎的收录,能够增加网站优化效果; Ⅱ 为了让URL看起来更简单,更加友好易读,也给人一种专业性的感觉。
Apache 服务器上开启和通过.htaccess文件来配置伪静态:
1)在 Apache 配置文件httpd.conf中启用Rewrite 打开httpd.conf,定位到代码:
#LoadModule rewrite_module modules/mod_rewrite.so
2)把前面#去掉。没有则添加,但必须独占一行,以使 apache 支持 mod_rewrite 模块。
LoadModule rewrite_module modules/mod_rewrite.so
3)继续在 httpd.conf 搜索定位 AllowOverride,并把后面的参数从None全部改成All
4)配置.htaccess 伪静态规则
在要启用伪静态的项目的根目录(如 www)下建立 .htaccess 文件
在.htaccess 文件中输入以下内容(或开源项目本身指定的内容)
< IfModule mod_rewrite.c>
Options +FollowSymlinks -Multiviews
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
#RewriteRule RewriteRule index.html$ index.php
#RewriteRule ^(.*?).html$ index.php?$1.html [QSA,PT,L]
#RewriteRule ^/index([0-9]*).html$ /index.php?id=$1
#更多伪静态规则
< /IfModule>
2.8 启动服务
方式一 打开 Apache/bin 目录下的 ApacheMonitor.exe启动 Apache;
方式二 服务 >> Apache 2.4 右键 启动
测试是否安装成功:
在浏览器中输入HTTP://localhost:8888(此处8888是我选择的端口)验证服务是否成功搭建
或者查看系统服务:
安装成功!
3. 整合 PHP、Apache
3.1 配置 apache 支持 php
1)打开 Apache24\conf 目录下的配置文件 httpd.conf,并定位到:
#LoadModule vhost_alias_module modules/mod_vhost_alias.so
2)在下方添加:
LoadModule php7_module "E:/Software/PHProgram/PHP/php7apache2_4.dll"
PHPIniDir "E:/Software/PHProgram/PHP"
AddType application/x-httpd-php .php .html .htm
注:这里安装的是PHP7,假如是PHP8,则应相应地换成php8_module、php8apache2_4.dll等
3.2 修改网站默认首页
找到:
DirectoryIndex index.html
4)改为:
DirectoryIndex index.php index.html
3.3 修改Apache 默认的站点目录
1)在 E:\Software\PHProgram 下,新建 一个名为 www 的文件夹,做为网站根目录;
2)在 httpd.conf 中,找到如下代码:
# DocumentRoot: The directory out of which you will serve your
# documents. By default, all requests are taken from this directory, but
# symbolic links and aliases may be used to point to other locations.
#
DocumentRoot "${SRVROOT}/htdocs"
修改为:
# DocumentRoot: The directory out of which you will serve your
# documents. By default, all requests are taken from this directory, but
# symbolic links and aliases may be used to point to other locations.
#
DocumentRoot "E:\Software\PHProgram\www"
此目录即为打开 http://localhost:8888 时的根目录,可在该目录创建index.php,用于默认访问的 php 文件。
3.4 测试 php 网站
在 www 目录下,新建文件index.php,写入以下内容:
phpinfo();
?>
然后打开http://localhost:8888,如果显示PHP版本及配置信息,则表示配置成功!
4. 安装 php 依赖管理工具:Composer
Composer是 PHP 开发必不可少的工具之一,可有效减少依赖包下载和管理的烦恼。
4.1 下载 Composer
官方下载地址:https://getcomposer.org/download/,
也可点击 这里 直接下载(不打开下载页)
4.2 安装 Composer:方式一
1)检查/修改配置文件
在 php 安装目录中找到 php.ini 文件,用记事本打后定位到
;extension=openssl
去掉前面的“;”(分号)以启用配置
extension=openssl
2)双击运行 Composer-Setup.exe
程序会在每次执行时安装最新的 Composer 版本,后面一步步安装即可。
3)检查是否安装成功 然后等待安装完成,重新打开 命令行窗口,输入命令检查是否安装成功:
Microsoft Windows [版本 10.0.22621.1555]
(c) Microsoft Corporation。保留所有权利。
C:\Users\pro>composer --version
Composer version 2.5.5 2023-03-21 11:50:05
当然,也可以按照官方文档的方式进行安装,见方式二。
4.3 安装 Composer:方式二
php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
php -r "if (hash_file('sha384', 'composer-setup.php') === '55ce33d7678c5a611085589f1f3ddf8b3c52d662cd01d4ba75c0ee0459970c2200a51f492d557530c71c15d8dba01 eae') { echo '安装程序验证'; } else { echo '安装程序损坏'; unlink('composer-setup. php'); } echo PHP_EOL;"
php composer-setup.php
php -r "unlink('composer-setup.php');"
4.4 更改 Composer 镜像
因为国外网站访问比较慢,这里介绍安装Composer 镜像。
1)阿里云 Composer 镜像 【推荐 】
composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/
2)腾讯云 Composer 镜像
composer config -g repo.packagist composer https://mirrors.cloud.tencent.com/composer/
3)华为云 Composer 镜像
composer config -g repo.packagist composer https://repo.huaweicloud.com/repository/php/
4)安畅云 Composer 镜像
composer config -g repo.packagist composer https://php.cnpkg.org/
5. VsCode 配置
VsCode 是用的比较多的开发 PHP 的工具,进行配置之后要比Jerbrian家的IDE要方便很多。
5.1 安装 vs code 插件
在vs code插件商店中,搜索并安装相关的组件:
ComposerPHP 语言支持PHP Debug(后面需要做进一步的设置)PHP Extendsion PackPhp IntelliSense
注:Vs code 安装 debug 插件后,需要在 settings.json 中进行设置,即在最外层大括号下面,添加以下两个php.exe所在的路径:
{
// "settingsSync.ignoredExtensions": [
// ],
"php.validate.executablePath": "E:/Software/PHProgram/PHP/php.exe",
"php.debug.executablePath": "E:/Software/PHProgram/PHP/php.exe"
}
5.2 下载和配置 Xdebug 库
Xdebug,是一个 PHP 插件,可用于单步调试 / 输出调试等,配合VS Code的插件,功能十分强大,可满足日常大多数环境需求。
插件功能包括:
远程监听调试本地单文件调试本地浏览器调试
一般前两个功能使用较多,小脚本使用第二个功能,网站类代码推荐监听调试。
准备下载与当前 php 版本、当前系统相对应的 Xdebug 版本
打开 版本选择 网页:
1) cmd 中运行以下命令
php -i
2)运行后,复制cmd中得到的 phpinfo() 的完整输出信息:
phpinfo()
PHP Version => 7.4.33
$_SERVER['argv'] => Array
(
)
... ...
3)打开上面提供的这个 版本选择 链接,并粘贴到此网页中的多选文本框中,然后提交。
4)下载 Xdebug
提交后,网站会根据已提交的信息,自动为您推荐当前PHP版本、系统环境匹配的Xdebug库。然后就可下载该 xdebug.dll 库文件
5)将下载的 php_xdebug-3.1.6-7.4-vc15-x86_64.dll 复制到 E:\Software\PHP_Program\PHP\ext扩展目录下
并将文件php_xdebug-3.1.6-7.4-vc15-x86_64.dll 重命名为 php_xdebug.dll
6)修改 E:\Software\PHProgram\PHP 目录下的 php.ini 配置文件
在php.ini文件末尾加上以下代码并保存:
[XDebug]
zend_extension=php_xdebug.dll
xdebug.output_dir="E:\Software\PHProgram\tmp\xdebug"
; xdebug 监听地址(Xdebug3写法,2的名称为 remote_host)
xdebug.client_host="127.0.0.1"
xdebug.client_port=9003
xdebug.remote_handler=dbgp
xdebug.start_with_request = yes
xdebug.idekey = Vscode
xdebug.collect_return = On
xdebug.mode = debug
; 本机调试,Xdebug3新增设置
xdebug.discover_client_host = On
注: 1、修改 php.ini 文件后,必须重启Apache服务才能生效; 2、本文安装的 Xdebug 基于版本3x。如果是 2x,那么 php.ini 中的 [Xdebug] 的配置项不同,具体请看官网文档 【Xdebug3 和 Xdebug2 配置项变化较大(3的配置项在2的基础上有移除、改名或新增等),更多配置请参考官方文档(很多网上的配置都是错的)】
7)cmd 命令提示符下测试xdebug安装是否成功:
php --version 命令
Microsoft Windows [版本 10.0.22621.1555]
(c) Microsoft Corporation。保留所有权利。
C:\Users\pro> php --version
PHP 7.4.33 (cli) (built: Nov 2 2022 16:00:55) ( ZTS Visual C++ 2017 x64 )
Copyright (c) The PHP Group
Zend Engine v3.4.0, Copyright (c) Zend Technologies
with Xdebug v3.1.6, Copyright (c) 2002-2022, by Derick Rethans
C:\Users\pro>
网页中输出 phpinfo() 信息
www (网站要目录)下的 index.php文件:
phpinfo();
?>
浏览器访问 http://localhost:8888 : 出现 Xdebug,说明安装成功 !
如果phpinfo有XDebug,cmd下没有,请检查环境变量设置是否正确
8)Vs code 中 php 的 debug 插件配置
在网站根目录www下,新建一个 test.php文件(用于debug插件的配置测试),并编写以下内容:
for ($i = 0; $i < 10; $i++) {
echo $i;
}
?>
在有打开的 php 文件的情况下(如 test.php),单击 VSCode 左侧列表的【运行和调试】图标
再点击【创建launch.json文件】按钮
此时,即自动创建.vscode文件夹并将launch.json保存到 www/.vscode/ 路径下。
生成的launch.json 文件中的配置项如下:
{
"version": "0.2.0",
"configurations": [
{
"name": "Launch built-in server and debug",
"type": "php",
"request": "launch",
"runtimeArgs": [
"-S",
"localhost:8888",
"-t",
"."
],
"port": 9003,
"serverReadyAction": {
"action": "openExternally"
}
},
{
"name": "Debug current script in console",
"type": "php",
"request": "launch",
"program": "${file}",
"cwd": "${fileDirname}",
"externalConsole": false,
"port": 9003
},
{
"name": "Listen for Xdebug",
"type": "php",
"request": "launch",
"port": 9003
}
]
}
注:Listen for Xdebug 项的 port 属性,需要与php.ini配置文件中相同; Xdebug 的默认调试端口已从9000更改为9003。
5.3 调试运行 debug
1)选择运行和调试右边的下拉框,选择调试模式(如,选择 Listen for Xdebug),程序里打上断点;
2)按 F5 开始调试(也可按调试按钮);
3)打开浏览器访问 http://localhost:8888/test.php 此时页面尚不能正常加载(转圈)
4)继续按 F5 调试,直到程序跑完,就会看到页面加载好全部内容
php.ini中,xdebug.mode = debug 的使用场景为需要断点调试的时候。
但有时程序本身没问题,只是想看看性能和各个地方的耗时情况,则将 ’debug‘模式换成 trace (耗时)或 profile(性能) 模式。
如:
trace ,修改 php.ini
xdebug.mode = trace
在Vscode 调试模式名称下拉框中,选“Debug current script in console”,去掉php程序中所有断点,此时按一下 F5 程序就执行完毕,然后找到目录E:\Software\PHProgram\tmp\xdebug(php.ini中配置的目录),能看到多出了一个类似 trace.xxxxx.xt这样的文件。
profile (同理,略)
本地开发时,一般同时开启两个,即
xdebug.mode = debug,profile
说明:允许以逗号分隔xdebug.mode的值,作为标识符来同时启用多个模式
6. MySQL在Windows 环境中的安装
参见我的另一篇文章 MySQL在Windows 环境中的安装
7. 附:Xdebug3 参数说明
7.1 xdebug.mode
此设置控制启用哪些Xdebug功能。 接受以下值:
值说明off没有启用任何功能。Xdebug 除了检查功能是否已启用外不起作用。如果您想要接近零的开销,请使用此设置。develop启用包括重载的var_dump()在内的开发帮助。coverage使Code Coverage Analysis能够生成代码覆盖率报告,主要是与PHPUnit结合使用 。coverage使Code Coverage Analysis能够生成代码覆盖率报告,主要是与PHPUnit结合使用 。debug启用步骤调试。这可用于在代码运行时逐步检查代码,并分析变量的值。gcstats使垃圾收集统计信息能够收集有关PHP的垃圾收集机制的统计信息。profile启用性能分析,您可以使用它通过KCacheGrind之类的工具分析性能瓶颈。trace启用功能跟踪功能,该功能允许您记录每个函数调用,包括参数,变量赋值以及在对文件的请求期间进行的返回值。
以","(逗号)分隔 xdebug.mode 的值作为标识符来同时启用多个模式xdebug.mode=develop,trace。 还可以通过XDEBUG_MODE在命令行上设置环境变量来设置模式,这样优先于xdebug.mode 设置。
7.2 start_with_request
在CLI模式下,PHP脚本可以被轻松的调试,但是在fastcgi模式下,xdebug在何种情况拦截请求并触发调试呢,实际上一套WEB API 只有极少有性能瓶颈的API才需要被debug,每个接口都去记录profile是没必要的(此配置的意义)
值说明yes该功能在 PHP 请求启动时以及运行任何 PHP 代码之前启动。例如,xdebug.mode = trace 和 xdebug.start_with_request = yes启动整个请求的功能跟踪。no请求开始时,该功能未激活。你仍然可以调用函数xdebug_start_trace() 来启动 trace;调用xdebug_break()开始逐步调试;调用xdebug_start_gcstats()来做垃圾收集统计。trigger1)仅当请求开始时存在特定触发条件时,才激活该功能。触发器的名称是(大写)XDEBUG_TRIGGER,而Xdebug会去检查一下变量中($_ENV,$_GET,$_POST,$_COOKIE)是否有这个字段;2)功能特定的触发器名称也有一个旧式的备用名称:(XDEBUG_PROFILE 对应于 Profiling),(XDEBUG_TRACE 对应于 Function Trace)和 (XDEBUG_SESSION 对应于 Step Debugging);3)也可以通过进行步骤调试的调试会话管理XDEBUG_SESSION_START。4)使用xdebug.trigger_value可以控制哪个特定的触发器值将激活该触发器。如果xdebug.trigger_value设置为空字符串,则将接受任何值:示例:http://localhost:8000/test.php?XDEBUG_TRIGGERdefault该default值取决于xdebug.mode:debug:triggergcstats:noprofile:yestrace:trigger