PHP虚拟目录由Web服务器(如IIS)创建,需三步配置:①在IIS中添加虚拟目录映射URL路径到物理路径;②为该目录单独配置FastCgiModule处理.php请求;③设置文件夹权限、php.ini(cgi.fix_pathinfo=0)并测试,框架还需Web.config重写规则。

PHP 本身不创建虚拟目录,真正创建和配置虚拟目录的是 Web 服务器(如 IIS、Apache 或 Nginx)。所谓“PHP 虚拟目录”,其实是让服务器把某个 URL 路径(比如 /myapp)映射到服务器上一个非网站根目录的物理路径(比如 D:\projects\myapp),并确保其中的 .php 文件能被正确解析执行——而不是被下载或报错。
第一步:在 IIS 里添加虚拟目录(最常见场景)
打开 IIS 管理器 → 展开左侧网站(如 Default Web Site)→ 右键 →「添加虚拟目录」→ 填写:
-
别名:浏览器中访问的路径名,例如
soft(访问地址就是http://localhost/soft/) -
物理路径:你本地存放 PHP 文件的真实文件夹,例如
D:\myapp(注意:路径不能含中文、空格或特殊符号)
点确定完成创建。此时只是“映射成功”,.php 还不能运行。
第二步:手动加 PHP 处理程序(关键!90%失败卡在这)
在 IIS 管理器中,必须选中你刚建的虚拟目录节点(不是根站点!),再双击「处理程序映射」→ 右侧「添加模块映射…」→ 填写:
立即学习“PHP免费学习笔记(深入)”;
-
请求路径:
*.php -
模块:从下拉菜单选
FastCgiModule(手输无效) -
可执行文件:填你的
php-cgi.exe绝对路径,例如C:\php\php-cgi.exe -
名称:建议起个唯一名,如
PHP_via_FastCGI_soft - 勾选「仅限脚本」和「验证文件是否存在」
点确定后,该虚拟目录下的 PHP 就能正常执行了。
第三步:检查权限和基础配置
缺一不可:
-
文件夹权限:右键物理路径文件夹(如
D:\myapp)→「属性」→「安全」→ 添加用户IIS_IUSRS和IUSR,赋予「读取 & 执行」权限 -
php.ini 设置:确认
cgi.fix_pathinfo = 0(不是 1),否则带斜杠的 URL(如/soft/index.php/test)容易报 500 或空白页 -
测试文件:在
D:\myapp下放一个info.php,内容为<?php phpinfo(); ?>,用浏览器访问http://localhost/soft/info.php
补充:如果跑 ThinkPHP/Laravel 等框架
仅加处理程序还不够,还需在虚拟目录根下放一个 Web.config 文件,内容如下(用于重写路由):
<configuration>
<system.webServer>
<rewrite>
<rules>
<rule name="Rewrite to index.php" stopProcessing="true">
<match url="^(.*)$" />
<conditions logicalGrouping="MatchAll">
<add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
<add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
</conditions>
<action type="Rewrite" url="index.php/{R:1}" />
</rule>
</rules>
</rewrite>
</system.webServer>
</configuration>
保存后刷新页面,框架路由就能正常工作了。



















