php在windows server 2019需用iis fastcgi模式,必须下载thread safe版并配置php-cgi.exe;phpmyadmin须手动配置config.inc.php,启用mysqli、mbstring、openssl扩展,并添加web.config重写规则。
php 安装必须选 iis fastcgi 模式,不是 apache 模块
windows server 2019 默认用 iis,php 官方 windows 二进制包不带 php5apache2_4.dll 这类 apache 模块,硬配 apache 是绕远路。iis 只能走 fastcgi——这意味着你得确认下载的是 thread safe(ts)版本的 php,并且启用 php-cgi.exe,不是 php.exe。
常见错误现象:HTTP Error 500.0 - Handler "php" has a bad module "FastCgiModule",基本就是 PHP 路径没填对,或 php-cgi.exe 权限不足。
- 去 windows.php.net/download/ 下载
PHP 8.x (x64) Thread SafeZIP 包(别下 Non-Thread Safe) - 解压到
C:\PHP\,确保C:\PHP\php-cgi.exe存在且可被 IIS_IUSRS 组读取执行 - IIS 管理器 → “处理程序映射” → 添加模块映射:
请求路径:*.php,可执行文件:C:\PHP\php-cgi.exe,名称填php - 务必勾选“记录未处理的文件”,方便排查 404 式的脚本找不到问题
phpMyAdmin 需手动配置 config.inc.php,不能靠 web 安装向导
IIS 默认禁用写权限,setup/ 目录根本跑不起来,点开就 403 或空白页。官方文档里那个“浏览器访问 setup/ 自动生成配置”的流程,在 Server 2019 + IIS 下基本是摆设。
使用场景:你已经装好 MySQL/MariaDB,知道 root 密码,也确认 localhost:3306 能连通——这时直接手写配置最稳。
- 把 phpMyAdmin 解压到
C:\inetpub\wwwroot\phpmyadmin\(路径不能含空格或中文) - 复制
config.sample.inc.php为config.inc.php - 编辑该文件,关键三行必须改:
$cfg['Servers'][$i]['host'] = 'localhost'; $cfg['Servers'][$i]['auth_type'] = 'cookie'; $cfg['Servers'][$i]['extension'] = 'mysqli';
- 如果 MySQL 改了端口(比如 3307),要加:
$cfg['Servers'][$i]['port'] = '3307'; - 别碰
$cfg['blowfish_secret']的长度——至少 32 字符,用随机字符串,不是随便敲几个字母
权限和扩展缺一不可:mysqli、mbstring、openssl 必须启用
phpMyAdmin 启动报错 The mysqli extension is missing 或白屏无提示,八成是 php.ini 里扩展没开,或者 DLL 文件根本没放对位置。
性能影响:mbstring 缺失会导致中文库名/表名显示乱码;openssl 关系到连接远程 MySQL(如 RDS)时的 SSL 握手。
- 打开
C:\PHP\php.ini,取消以下三行前面的分号:;extension=mysqli ;extension=mbstring ;extension=openssl
- 确认
extension_dir指向正确,例如:extension_dir = "C:\PHP\ext" - 检查
C:\PHP\ext\下是否存在php_mysqli.dll等文件(注意文件名大小写和位数匹配) - IIS 管理器里重启“Default Web Site”,或运行
iisreset /noforce刷新 PHP 加载
IIS URL 重写规则不是必须,但没它会丢功能
phpMyAdmin 的导入大 SQL、上传配置、主题切换等操作,依赖 mod_rewrite 类似行为。IIS 没这模块,但可以用 URL 重写模块模拟——否则你会遇到“404 Not Found”出现在 /phpmyadmin/import.php 这种明明存在的路径上。
兼容性影响:不配的话,部分 AJAX 请求失败,界面卡在“Loading…”;配错反而引发 500 错误,因为重写规则语法和 Apache 不同。
- 先安装 IIS URL Rewrite Module
- 在
C:\inetpub\wwwroot\phpmyadmin\web.config里贴入标准规则(不是 .htaccess):<configuration><system.webserver><rewrite><rules><rule name="phpmyadmin" stopprocessing="true"><match url="^(.*)$" ignorecase="false"></match><conditions logicalgrouping="MatchAll"><add input="{REQUEST_FILENAME}" matchtype="IsFile" negate="true"></add><add input="{REQUEST_FILENAME}" matchtype="IsDirectory" negate="true"></add></conditions><action type="Rewrite" url="index.php/{R:1}" appendquerystring="true"></action></rule></rules></rewrite></system.webserver></configuration> - 注意:
web.config必须放在 phpmyadmin 根目录,不是网站根目录
IIS 和 PHP 的集成细节藏在 FastCGI 设置、扩展加载顺序、以及 Windows 权限模型里,而不是界面上点几下就能过。尤其 php-cgi.exe 的用户上下文、web.config 的作用域、还有 php.ini 里 extension_dir 的路径斜杠方向——这些地方出错,错误日志往往只报 500,不告诉你哪一行崩了。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











