Windows下使用官方NTS ZIP包安装PHP可永久免费、开箱即用;需下载Non-Thread-Safe版本,解压至纯英文路径,启用mysqli、PDO、curl、openssl扩展,配置时区与上传限制,添加环境变量后通过php -v和php -m验证,最后用php -S启动内置服务器测试。

想在本地电脑上直接运行PHP脚本、调试接口或搭建小型Web服务,又不想被商业授权限制或试用期卡住,就得装一个真正开箱即用、无需续费、所有核心扩展默认可用的PHP环境。Windows平台下,官方提供的Non-Thread-Safe(NTS)ZIP包就是唯一符合“永久免费”定义的安装方式——它不带任何激活机制、不限制功能、不绑定账户,解压即用。
下载并解压PHP核心文件
访问 https://www.php.cn/link/a9a2c061a1c2743d489c6863eae6725a,找到最新稳定版(如 php-8.3.12-nts-Win32-vs16-x64.zip),点击下载。注意必须选 【Non Thread Safe (NTS)】 版本,TS版本专为Apache模块模式设计,与现代开发常用CLI和内置服务器不兼容,强行使用会导致curl、openssl等扩展加载失败。
下载完成后,右键→“全部解压缩”,目标路径选纯英文、无空格、无中文的目录,例如 D:\php。解压后确认目录内存在 php.exe、php.ini-development 和 ext 文件夹——缺任何一个都说明解压不完整,需重新下载。
启用关键扩展:mysqli、PDO、cURL、OpenSSL
这一步不做,连数据库连接和HTTPS请求都跑不通,项目直接报错退出。
立即学习“PHP免费学习笔记(深入)”;
进入 D:\php 目录,将 php.ini-development 复制一份,重命名为 php.ini。
用记事本或VS Code打开 php.ini,按 Ctrl+F 搜索 extension_dir,取消该行注释,并确保路径指向 ext 文件夹:
extension_dir = "ext"
继续搜索以下四行,逐行删除前面的分号(;):
;extension=mysqli
;extension=pdo_mysql
;extension=curl
;extension=openssl
【重要】不要跳过 openssl 扩展开启——没有它,file_get_contents('https://...') 会抛出 'Unable to find the socket transport "ssl"' 错误,且 Composer 安装包时必然失败。
配置时区与上传限制
打开 php.ini,搜索 date.timezone,在其下方添加一行:
date.timezone = Asia/Shanghai
搜索 upload_max_filesize,改为:
upload_max_filesize = 64M
再搜 post_max_size,同步改为:
post_max_size = 64M
这两个值必须相等或 post_max_size ≥ upload_max_filesize,否则表单提交大文件时会静默失败,浏览器只显示空白页,毫无提示。
添加系统环境变量并验证
第一步:右键“此电脑”→属性→高级系统设置→环境变量→系统变量→Path→编辑→新建→填入 D:\php →确定保存。
第二步:关闭所有已打开的命令提示符窗口,重新打开一个新的cmd窗口。
第三步:输入命令:
php -v
看到类似 “PHP 8.3.12 (cli) …” 的输出,说明PHP已成功注册到系统路径。
第四步:输入命令:
php -m | findstr -i "mysqli curl openssl"
若三行对应模块名均被列出,表示扩展已正确加载。如果某项没出现,回到 php.ini 检查是否漏删分号,或确认 extension_dir 路径拼写是否与实际一致。
快速测试PHP是否真正可用
在 D:\test 目录下新建一个文件,命名为 index.php,内容为:
<?php echo "PHP运行正常,时间:" . date('Y-m-d H:i:s'); ?>
打开命令提示符,cd 到 D:\test 目录,执行:
php -S localhost:8000
浏览器访问 http://localhost:8000,页面显示当前时间,说明PHP解释器、时区配置、内置服务器三者全部就绪。



















