PHP本身不提供创建虚拟目录的命令行指令,虚拟目录是Web服务器(如Nginx、IIS、Apache)的配置功能;需通过服务器配置实现URL路径到非根物理目录的映射并确保.php文件可执行,命令行仅能辅助完成目录创建、配置编辑与重载等配套操作。

PHP 本身没有“创建虚拟目录”的命令行指令——虚拟目录是 Web 服务器(如 Nginx、IIS、Apache)的配置概念,不是 PHP 语言内置功能。所谓“PHP 虚拟目录”,实际是指让某个 URL 路径映射到服务器上非网站根目录的物理路径,并能正常执行 .php 文件。这必须通过配置 Web 服务器实现,而非运行某条 PHP 命令。
但你可以用命令行快速完成关键步骤,分环境说明:
Windows + IIS:命令行快速启用虚拟目录 PHP 支持
IIS 不支持纯命令行“一键创建并启用 PHP 虚拟目录”,但可用 PowerShell + appcmd 高效完成核心操作:
-
创建虚拟目录(指向物理路径):
立即学习“PHP免费学习笔记(深入)”;
Import-Module WebAdministration New-WebVirtualDirectory -Site "Default Web Site" -Name "myapp" -PhysicalPath "D:\www\myapp"
-
将其转为应用程序(关键!否则不继承 PHP 处理器):
ConvertTo-WebApplication -Site "Default Web Site" -ApplicationPool "DefaultAppPool" -Name "myapp"
-
手动添加 FastCGI 映射(需提前在 IIS 全局配置中注册 php-cgi.exe):
%windir%\system32\inetsrv\appcmd set config "Default Web Site/myapp" /section:handlers /+[name='PHP_via_FastCGI',path='*.php',verb='*',modules='FastCgiModule',scriptProcessor='C:\php\php-cgi.exe',resourceType='Either']
✅ 提示:确保
C:\php\php-cgi.exe已在 IIS「FastCGI 设置」中注册;物理路径需全英文、无空格;目录权限需授予IIS_IUSRS读取+执行。
Windows + Nginx:命令行配好 location + alias(无需重启服务)
Nginx 没有动态添加虚拟目录的命令,但可快速编辑配置并重载:
-
用记事本或 PowerShell 追加 location 块(例如映射
/api到D:/www/backend/api/):location /api/ { alias D:/www/backend/api/; index index.php; location ~ \.php$ { fastcgi_pass 127.0.0.1:9000; fastcgi_param SCRIPT_FILENAME $request_filename; include fastcgi_params; } } -
保存后,命令行重载配置(不中断服务):
nginx -t && nginx -s reload
⚠️ 注意:
alias值末尾必须带斜杠/,且SCRIPT_FILENAME必须用$request_filename(不能用$document_root$fastcgi_script_name),否则报 “No input file specified”。
通用 PHP 目录创建(真·命令行操作)
如果你只是想在服务器上快速新建一个物理目录用于后续配置虚拟目录,这才是 PHP 真正能用命令行做的事:
-
Windows(CMD/PowerShell):
mkdir "D:\www\myapp"
-
Linux/macOS:
mkdir -p /var/www/myapp
-
或用 PHP 自身命令行创建(跨平台,带权限控制):
php -r "mkdir('D:/www/myapp', 0755, true) || die('fail'); echo 'ok\n';"
✅ 推荐:生产环境权限设为
0755(所有者读写执行,组和其他人仅读+执行),避免0777;Windows 下mode参数会被忽略,权限由 NTFS 控制。
不复杂但容易忽略



















