Windows安装PHP 8.3关键在于SAPI与Web服务器精准配对:IIS必须用NTS版+FastCGI,Apache必须用TS版+php8apache2_4.dll;路径须纯英文无空格,php.ini配置需匹配extension_dir、扩展及date.timezone。

Windows安装PHP 8.3,关键不是“装”,而是“配对”——选对包、放对路径、配对Web服务器(IIS或Apache)的运行模式。CLI能跑php -v不等于网页能执行PHP,因为IIS和Apache加载的是不同SAPI(FastCGI或mod_php),依赖不同的PHP二进制文件、扩展DLL和php.ini位置。
IIS整合:必须用NTS + FastCGI
IIS不支持线程安全(TS)模式,官方自PHP 8.0起已停更TS包,8.3仅提供Non-Thread Safe(NTS)版本。搭配FastCGI是唯一稳定路径。
- 下载地址:windows.php.net/download#php-8.3,选择带
vs17 x64 NTS标识的ZIP包(如php-8.3.13-Win32-vs17-x64.zip) - 解压到纯英文、无空格、无中文、层级浅的路径,例如:
C:\php(禁止C:\Program Files\php或D:\my php\8.3) - 复制
php.ini-development为php.ini,编辑以下三项(其他可暂默认):extension_dir = "C:/php/ext"extension=mysqlidate.timezone = Asia/Shanghai - 安装Microsoft Visual C++ 2022 Redistributable (x64),否则
php-cgi.exe启动直接报错0xc000007b - IIS管理器中启用CGI功能 → 添加模块映射:
请求路径:*.php
可执行文件:C:\php\php-cgi.exe
模块:FastCgiModule
名称:自定义(如PHP_via_FastCGI)
Apache整合:必须用TS + php8apache2_4.dll
Apache 2.4通过mod_php方式加载PHP时,必须使用Thread Safe(TS)包,并依赖php8apache2_4.dll这个SAPI模块——它只存在于TS版中,NTS版不含此文件。
- 下载同页面下的
VC17 x64 Thread SafeZIP包(注意:虽官网主推NTS,但Apache场景仍需TS;PHP 8.3仍提供TS ZIP,别误选Source或Dev Pack) - 解压至类似
C:\php路径,同样禁用中文/空格 - 复制
php.ini-development→php.ini,启用:extension_dir = "C:/php/ext"extension=mysqliextension=mbstringdate.timezone = Asia/Shanghai - 在Apache的
httpd.conf末尾添加三行(路径与PHP版本严格对应):LoadModule php_module "C:/php/php8apache2_4.dll"PHPIniDir "C:/php"AddHandler application/x-httpd-php .php - 确认
C:/php/php8apache2_4.dll真实存在——命名错误(如写成php83apache2_4.dll)会导致Apache启动失败
验证配置是否生效
无论IIS还是Apache,都别信php -v——它只反映CLI环境。真正要看的是Web SAPI加载结果:
- 在网站根目录建
info.php,内容: - 浏览器访问
http://localhost/info.php,重点核对两处:
Loaded Configuration File:必须显示你修改的C:\php\php.ini路径
Server API:IIS应显示FastCGI,Apache应显示Apache 2.0 Handler
mysqli、mbstring等扩展必须出现在“enabled”列表中
常见失败原因速查
多数问题源于“路径错、版本混、配置分家”:
-
HTTP 500.0 / php-cgi.exe退出:缺VC2022运行库,或
php.ini里extension_dir路径错(反斜杠\未转义、ext文件夹实际不存在) -
phpinfo()不显示mysqli:你改了
C:\php\php.ini,但Apache正读C:\Windows\php.ini或XAMPP自带的配置——以页面显示的Loaded Configuration File为准 -
Apache启动失败:“Cannot load module”多因
LoadModule路径含中文/空格,或php8apache2_4.dll名与PHP大版本不符(8.3必须用8.3的DLL) -
日期函数返回UTC时间:
date.timezone未设或拼写错误(Asia/Shanghai不能写成Asia/Beijing,后者虽逻辑等价但部分Windows系统不识别)
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











