PHP不创建虚拟目录,虚拟目录由Web服务器配置;真实目录适合开发调试但不安全,虚拟目录屏蔽敏感文件、支持框架路由和多项目共存,上线前必须使用。

PHP 本身不创建虚拟目录,所谓“PHP 创建虚拟目录”是常见误解。虚拟目录是 Web 服务器(如 IIS、Apache、Nginx)的配置功能,PHP 只是在该路径下运行脚本。关键区别在于:真实目录是文件实际存放的物理位置;虚拟目录只是一个逻辑映射,用户通过 URL 访问 /myapp,但文件可能存放在 D:\projects\thinkphp8\public 这样的任意路径。
真实目录:直接、简单、适合开发调试
把项目整个放进网站根目录(如 C:\inetpub\wwwroot\myapp),无需额外配置处理程序或重写规则。适合单项目、本地测试、或结构极简的静态+PHP 混合站点。但缺点明显:敏感文件(如 .env、config/、app/)可能被直接下载;URL 路径与物理路径强绑定,迁移或共存多个项目时容易冲突。
虚拟目录:安全、灵活、适合生产部署
它让 Web 服务器只暴露 public/ 子目录,屏蔽上层敏感结构。例如 ThinkPHP 或 Laravel 项目必须用虚拟目录(或虚拟主机)指向 public/,否则路由失效、配置泄露。在 IIS 中需手动添加 FastCgiModule 映射;在 Apache 中需配 Alias + 匹配的
怎么选?看三个实际需求
- 是否用现代 PHP 框架:是 → 必须用虚拟目录(指向 public/),否则 .env 可下载、路由全 404
- 是否需要多个项目挂同一域名下:是 → 用虚拟目录(如 /blog、/api、/admin),不用开多个站点
- 是否追求最小配置、快速验证功能:是 → 先放真实目录跑通,再迁移到虚拟目录做安全加固
一句话总结:真实目录是“能跑就行”,虚拟目录是“该跑才跑”。上线前务必切到虚拟目录模式,这不是可选项,是安全底线。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











