php -v能运行不代表web服务可用,因cli与web使用不同php.ini、扩展版本不匹配或路径含空格/中文致加载失败;需选vc17+nts官方zip包,安装vc2022运行库,解压至c:\php,复制php.ini-development为php.ini并启用extension_dir、mysqli、zip等扩展,配置date.timezone和openssl,重启web服务及终端。

php -v 能跑起来,不代表 Web 服务能用;php.ini 加载错位置、扩展版本不匹配、CLI 和 Web 用的不是同一个配置——这些才是 Win11 上 PHP 8.3 跑不起来的真正原因。
怎么选对官方 ZIP 包(VC17 + NTS 是默认选项)
PHP 8.3 在 Windows 官网只提供 Non-Thread Safe (NTS) 版本,不再发布 TS 包。别被旧教程误导去搜“TS”,那已经失效了。
- 访问
https://windows.php.net/download/,找带VC17和x64标识的 ZIP,例如:php-8.3.6-Win32-vs17-x64.zip - 必须安装
Microsoft Visual C++ 2022 Redistributable (x64),否则启动php.exe会直接报0xc000007b错误 - 下载页上标着 “Source code” 或 “Dev Pack” 的包不要点——它们不能运行,只是给编译者用的
解压后必须做的三件事(路径、php.ini、PATH)
Win11 对空格和中文路径更敏感,哪怕只是 C:\Program Files\php 这种常见路径,也会导致 extension=openssl 加载失败或 php --ini 显示配置未加载。
在 Windows 11 上"直接发声"的 TTS(从 WSL2/TUI 调用 powershell.exe + System.Speech)。适用于用户说"说出来/读出来/语音播报/用TTS",或反馈"没声音/tts 生成的 mp3 是空的/播不出来",以及需要中文语音但 OpenClaw 内置 tts 不可用时。
- 解压到无空格、无中文、层级浅的路径,例如:
C:\php(不是C:\My Tools\php-8.3) - 把
php.ini-development复制一份,重命名为php.ini;别用php.ini-production,它默认禁用所有扩展 - 在系统环境变量
Path中新增一行:C:\php;改完后必须关掉所有已打开的 CMD/PowerShell 窗口再重开,否则php -v仍可能报“命令未找到”
为什么 phpinfo() 不显示 zip 或 mysqli 扩展
Web 服务器(Apache/Nginx/IIS)和命令行(CLI)默认读取不同位置的 php.ini。你改了 C:\php\php.ini,但 Apache 可能还在读 C:\xampp\php\php.ini,这就造成「CMD 里 php -m | findstr zip 有结果,网页里却没 zip 模块」。
- 先用
<?php phpinfo(); ?>页面确认Loaded Configuration File显示的是哪个路径,只改那个文件 - 取消注释这三行:
extension_dir = "ext"、extension=mysqli、extension=zip(注意:不是extension=php_zip.dll) - 检查
C:\php\ext\php_zip.dll是否真实存在;如果不存在,说明你下的是精简版 ZIP(极少见),换回官网完整包 - 改完
php.ini后,必须重启 Web 服务(Apache/Nginx/IIS),不是刷新网页
date.timezone 和 openssl 报错是最常漏配的两项
date() 返回时间不对、curl_init() 报 SSL certificate problem,基本都卡在这两个地方。
- 在
php.ini里加一行:date.timezone = Asia/Shanghai(别写成PRC或留空) - 确保
extension=openssl已启用,且libeay32.dll和ssleay32.dll在C:\php目录下(新版 PHP 8.3 已内置,不用额外放) - 如果用
php -S localhost:8000启动内置服务器,它只走 CLI SAPI,不会加载 Web 配置——测试 Web 功能必须配合 Apache/Nginx
php -v 依然失败。php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!










