为什么 IIS 配 PHP 容易卡住

2026-11-04 0 6

IIS 原生面向 ASP.NET,PHP 需要借助 FastCGI 运行。很多问题不是 PHP 本身,而是映射、权限和配置项没对齐。理解这条链路,排查会快很多。

环境准备

先确认三件事:IIS 已安装 CGI 模块;PHP 解压目录避开含空格的路径;下载的是与系统位数匹配的 NTS 版本。把 php.ini-production 复制为 php.ini,不要直接改模板。

FastCGI 映射怎么配

在 IIS 管理器中选中站点,进入“处理程序映射”,添加模块映射:请求路径填 *.php,模块选 FastCgiModule,可执行文件填 php-cgi.exe 的完整路径,名称自定义。勾选“请求限制”里的“仅当请求映射到文件时才调用处理程序”,避免路径伪造。

映射完成后,在站点根目录放一个 index.php,内容为 <?php phpinfo();,浏览器访问验证。若返回 500,先看事件查看器与 PHP 错误日志,而不是急着改代码。

php.ini 的几个关键项

  • fastcgi.impersonate = 1:让 PHP 以请求者身份访问文件,减少权限冲突。
  • cgi.fix_pathinfo = 0:降低路径解析被利用的风险。
  • extension_dir 指向 ext 目录,再按需开启扩展。
  • date.timezone 必须设置,否则部分框架会报错。

修改后重启 IIS 或回收应用程序池生效。

权限与 500 错误排查

IIS 的应用程序池身份通常是 IIS_IUSRS 或自定义账户。PHP 目录需要该身份有读取和执行权限;上传目录、缓存目录需要写权限,但不要给整站写权限。

常见 500 的成因集中在:php-cgi 路径写错、php.ini 路径未指定、扩展加载失败、站点目录权限不足。可在 FastCGI 设置中开启标准错误输出,或临时把 display_errors 打开定位,上线前务必关闭。

URL 重写与伪静态

框架通常依赖重写。安装 URL Rewrite 模块后,导入框架自带的 web.config 规则,把不存在的路径交给 index.php 处理。注意规则顺序,静态文件规则应排在前面,避免图片请求被转发。

上线前的检查清单

确认 displayerrors 关闭、错误日志路径可写、uploadmaxfilesize 与 postmax_size 满足业务、会话目录存在且可写。做完这几步,IIS 跑 PHP 基本稳定,后续问题多与扩展和权限有关。

看过这篇文章的人,推荐看以下内容

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

版权声明:所有的源码、软件和资料,不得使用于非法商业用途,不得违反国家法律,一切关于该资源商业行为与本站无关。

免费cms模板 建站百科 为什么 IIS 配 PHP 容易卡住 https://www.mianfeicms.com/12337.html

我是签名

相关文章

猜你喜欢
发表评论
暂无评论