部署yii2.0.55到windows iis需四步:①安装php 7.4+ x64 ts版并配置php-cgi.exe映射及必要扩展;②在项目根目录配置web.config实现url重写与敏感目录隐藏;③站点物理路径设为项目根目录,iis_iusrs需对根目录有读取执行、对web/runtime有修改权限;④通过四类访问验证路由、重写、安全与php版本。

将Yii2.0.55项目部署到Windows服务器IIS环境,需解决URL重写、PHP运行时兼容性、入口文件路径映射及静态资源访问四大核心问题,不能直接套用Apache的.htaccess规则。
确认PHP与IIS模块已就绪
打开IIS管理器 → 查看“模块”列表,确认已安装 【php-cgi.exe】 且版本为7.4或8.0(Yii2.0.55最低要求PHP 7.1,但IIS下强烈建议用PHP 7.4 x64 Thread Safe版);若未安装,需从windows.php.net下载对应VC15/VC16线程安全版,并在IIS中通过“处理程序映射”添加*.php → 指向php-cgi.exe的完整路径(如C:\php\php-cgi.exe)。
检查php.ini中必须启用:extension=php_opcache.dll、extension=php_mbstring.dll、extension=php_pdo_mysql.dll——缺任一都可能导致Yii启动失败或中文乱码。
配置web.config实现URL重写
在Yii项目根目录(即包含index.php的目录)新建或编辑web.config文件,内容如下:
注意:此配置将所有非物理文件/目录的请求重写至index.php,同时禁止直接访问runtime、views、config等敏感目录——【若遗漏hiddenSegments配置,攻击者可直接读取config/web.php暴露数据库密码】。
设置IIS站点物理路径与权限
第一步:在IIS中新建网站,物理路径指向你的Yii2项目根目录(不是web子目录!);
第二步:点击该站点 → “基本设置” → 点击“连接为…” → 输入一个具有读取+执行权限的本地账户(如IIS_IUSRS),不要用“应用程序池标识”默认值——它对某些NTFS权限策略下无法访问vendor/autoload.php;
第三步:右键项目根目录 → “属性” → “安全” → 添加IIS_IUSRS用户组,并赋予“读取和执行”、“列出文件夹内容”、“读取”三项权限;
第四步:进入web子目录 → 右键 → “属性” → “安全” → 给IIS_IUSRS额外添加“修改”权限——【runtime目录必须可写,否则日志和缓存无法生成】。
验证与调试关键点
方法一:访问 http://localhost/ → 若显示“Congratulations!”页面,说明基础路由和PHP解析成功;
方法二:访问 http://localhost/index.php?r=site/about → 若正常显示about页面,则URL重写生效;
方法三:故意访问 http://localhost/runtime/app.log → 应返回HTTP 404而非文件内容,验证hiddenSegments生效;
方法四:在web.php中临时加入 die('PHP version: '.phpversion()); → 访问首页验证PHP版本是否符合Yii2.0.55要求。











