php 8.3 在 win11 上 php -v 成功但 web 无法执行,根本原因是 cli 与 web 服务器加载不同 php.ini 或扩展路径/vc 运行时不一致;必须选用 vc17+x64+nts 官方 zip 包,解压至无空格路径(如 c:\php),复制 php.ini-development 为 php.ini 并启用 extension_dir、mysqli、zip 等关键项,配置 date.timezone 和 openssl.cafile,且务必按 phpinfo() 显示的“loaded configuration file”路径修改并重启 web 服务。

PHP 8.3 在 Windows 11 上能跑 php -v,不代表 Web 请求能执行 PHP 脚本——根本原因几乎总是:CLI 和 Web 服务器加载了不同 php.ini,或扩展路径、版本、依赖库(如 VC 运行时)没对齐。
选错 ZIP 包:VC17 + NTS 是唯一可行组合
官网下载页上标着 “Thread Safe (TS)” 的包已彻底下线;PHP 8.3 for Windows 只提供 Non-Thread Safe (NTS) 版本。别被旧教程带偏去搜 TS。
- 必须选带
VC17和x64标识的 ZIP,例如:php-8.3.6-Win32-vs17-x64.zip - 跳过所有标着 “Source code” 或 “Dev Pack” 的链接——它们不含
php.exe,解压后直接报错 - 如果启动
php.exe弹出错误码0xc000007b,说明没装 Microsoft Visual C++ 2022 Redistributable (x64),必须先装它
解压路径和 php.ini 配置是 Web 失败的头号雷区
Win11 对路径更敏感,哪怕只是 C:\Program Files\php 这种系统常见路径,也会导致 extension=openssl 加载失败、php --ini 显示配置未加载。
在 Windows 上执行终端命令,或对比 Windows 与 Linux 的 Shell 语法时使用。建议先检测当前 Shell 是 PowerShell 还是 cmd.exe,再给出相应命令……
- 解压到无空格、无中文、层级浅的路径,例如:
C:\php(不是C:\My Tools\php-8.3) - 复制
php.ini-development为php.ini;别用php.ini-production,它默认禁用全部扩展 - 取消注释这三行:
extension_dir = "ext"、extension=mysqli、extension=zip(注意不是php_zip.dll) -
date.timezone和openssl.cafile是最常漏配的两项;不设date.timezone,phpinfo()会报警告,部分扩展可能拒绝初始化
Web 服务不认你改的 php.ini?先确认它到底读哪个文件
Apache/Nginx/IIS 默认不读你刚改的 C:\php\php.ini。你执行 php -m | findstr zip 看到 zip 模块,但网页里 phpinfo() 却没有,就是这个原因。
- 写一个
test.php,内容为<?php phpinfo(); ?>,在浏览器打开,重点看 “Loaded Configuration File” 这一行显示的路径 - 只修改那个路径下的
php.ini;如果显示为空或none,说明 Web 服务根本没加载任何配置,得查 FastCGI 或模块注册是否出错 - 改完后必须重启整个 Web 服务(不是刷新网页),比如
net stop apache2.4 && net start apache2.4或 Nginx 重载 -
C:\php\ext\php_zip.dll必须真实存在;若缺失,说明你下的是阉割版 ZIP,换回官网完整包
最容易被忽略的一点:Web 服务器和命令行 CLI 使用两套独立的加载逻辑,连 OpenSSL 依赖的 DLL(如 libcrypto-3-x64.dll)都可能因路径或版本不一致而静默失败——不要只盯着 php.ini,也要确认 C:\php 下所有 DLL 文件都在位且未被杀毒软件误删。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!










