为什么要在 Windows 上用 PHP
PHP 长期与 Linux 服务器绑定,但开发阶段完全可以在 Windows 上进行。Windows 桌面环境熟悉、编辑器生态丰富,本地调试也方便。把“开发在 Windows、部署在 Linux”作为常规组合,是很多团队的实际做法。关键在于把本地环境配置得接近生产环境,减少上线后的意外。
环境搭建的三条路线
集成环境包
XAMPP、WampServer、phpStudy 这类集成包把 Apache、PHP、MySQL 打包在一起,解压即用。适合快速起步和教学演示。缺点是版本组合固定,切换 PHP 版本不够灵活,目录结构也与生产环境差异较大。
手动安装 PHP 二进制包
从 PHP 官网下载 Windows 版压缩包,解压后把目录加入 PATH,再配置 php.ini。这种方式对版本控制最清晰,可以同时保留多个 PHP 版本目录,按项目切换。需要注意选择与架构匹配的版本(x64 或 x86),以及线程安全(TS)与非线程安全(NTS)的区别:与 Apache 的 mod_php 配合通常用 TS,用 FastCGI 方式则 NTS 更常见。
容器方式
Docker Desktop 在 Windows 上已经比较成熟。用官方 php 镜像配合 nginx 或 apache 镜像,可以做到与生产环境高度一致。代价是需要一点容器基础,且文件挂载的性能在部分场景下不如原生目录。
与 Web 服务器的配合
Apache
使用 modphp 时,在 httpd.conf 中加载 php 模块并指定 php.ini 所在目录即可。若用 FastCGI,则需配置 modfcgid 或 modproxyfcgi,指向 php-cgi.exe。后者更接近生产环境的进程模型,推荐优先考虑。
IIS
IIS 通过 FastCGI 运行 PHP,需要安装 CGI 功能并注册 php-cgi.exe 的处理程序映射。IIS 的优势是与 Windows 系统集成好,适合本来就使用 Windows 服务器的场景。配置时要留意应用程序池的身份权限,避免 PHP 进程无权读写项目目录。
几个容易踩的配置点
- 扩展加载:Windows 下扩展以 DLL 形式提供,在 php.ini 中用
extension=xxx启用,路径由extension_dir指定,写成相对路径更稳妥。 - 时区:设置
date.timezone,否则部分函数会告警。 - 路径分隔符:Windows 用反斜杠,代码中尽量使用
DIRECTORY_SEPARATOR或正斜杠,避免部署到 Linux 后出错。 - 文件大小写:Windows 文件系统不区分大小写,Linux 区分。本地能跑的
require路径,上线后可能找不到文件,命名时保持与类名、文件名一致。 - 换行符:注意 Git 的
core.autocrlf设置,避免提交时混入大量换行差异。
开发调试建议
开启 displayerrors 便于本地排错,但务必确认生产环境关闭。使用 Xdebug 配合 VS Code 或 PhpStorm 可以做断点调试,比 vardump 高效得多。Composer 在 Windows 上运行良好,注意把全局 bin 目录加入 PATH。
小结
PHP 在 Windows 上的开发体验取决于环境是否配置得当。集成包适合快速上手,手动安装适合需要多版本管理的项目,容器方案适合追求环境一致性。真正影响上线稳定性的,往往是路径、大小写、换行这些细节,提前规范比事后排查更省力。