必须下载官方nts版php二进制包(如php-8.3.x-win32-vs17-x64.zip),解压至无空格无中文路径(如c:php),复制php.ini-development为php.ini并启用extension_dir、mysqli、openssl等核心扩展,将c:php添加至系统path,重启终端后执行php -v和php --ini验证cli可用性,若需nginx则配置php-fpm.ini并启动php-fpm服务。

要在Windows 11上稳定运行PHP脚本、执行命令行调试、配合Apache或Nginx部署Web服务,必须完成PHP解释器的永久性安装与参数化配置——这不是一次性的临时测试,而是为长期开发建立可复用、可验证、可审计的基础环境。
下载并解压官方NTS版PHP二进制包
打开浏览器,访问 https://www.php.cn/link/a9a2c061a1c2743d489c6863eae6725a,在“PHP 8.3 (or latest stable)”栏目下,找到【x64 Non-Thread Safe (NTS) ZIP package】链接,点击下载。该版本不依赖IIS线程模型,兼容Apache模块加载与CLI独立调用,是Windows本地开发最稳妥的选择。
将ZIP文件解压到路径如 C:php —— 必须确保路径不含空格、中文或特殊符号,否则后续PATH注册和扩展加载会失败。
解压后进入该目录,确认存在 php.exe 文件。双击运行会一闪而过,这是正常现象;它不是GUI程序,而是命令行解释器。
初始化php.ini并启用核心扩展
在 C:php 目录中,将 php.ini-development 复制一份,重命名为 php.ini —— 这是PHP运行时唯一读取的配置主文件,名称拼错或放错位置会导致全部配置失效。
用记事本或VS Code打开 php.ini,定位到 extension_dir 行,取消注释并确保值为:extension_dir = "ext"
这告诉PHP去哪里找动态扩展库,路径是相对于PHP安装根目录的相对路径。
向下滚动,逐行取消以下扩展前的分号:extension=mysqliextension=opensslextension=pdo_mysqlextension=mbstring
其中 【mbstring 是处理中文字符的必备扩展,未启用会导致 strlen()、substr() 等函数对UTF-8文本计算错误】。
保存文件。此时不要重启任何终端——配置尚未生效,且当前窗口的环境变量还未刷新。
注册系统级PATH并验证CLI可用性
右键“此电脑”→“属性”→“高级系统设置”→“环境变量”,在“系统变量”区域找到 Path,点击“编辑”→“新建”,输入:C:php
关闭所有已打开的CMD、PowerShell、终端模拟器窗口——【旧窗口不会自动继承新PATH,强制关闭是唯一可靠方式】。
以管理员身份启动一个新的PowerShell窗口,执行:php -v
应输出类似 PHP 8.3.10 (cli) 的版本信息。
再执行:php --ini
确认 Loaded Configuration File 显示路径为 C:phpphp.ini,且没有 warning 提示“configuration file not found”。
配置PHP-FPM与Nginx协同运行(可选但推荐)
若你计划用Nginx替代Apache,需启用PHP-FPM进程管理器。打开 C:phpphp.ini,搜索 fastcgi.impersonate,将其值设为 1;再搜索 cgi.fix_pathinfo,设为 0 —— 后者不设为0会导致Nginx解析任意后缀文件的安全漏洞。
复制 C:phpphp-fpm.ini-production 为 C:phpphp-fpm.ini,用文本编辑器打开,修改两处关键项:
① pid = C:/php/php-fpm.pid
② error_log = C:/php/logs/php-fpm.log
注意:路径中使用正斜杠 / 或双反斜杠 \,单反斜杠 会被当作转义符处理而报错。
手动创建 C:phplogs 目录(php-fpm启动时不会自动建日志目录,缺失将导致服务静默失败)。
在PowerShell中执行:C:phpphp-fpm.exe -t
验证配置语法正确;无报错后,再执行:C:phpphp-fpm.exe -D
以守护进程模式启动PHP-FPM。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











