PHP本身不创建虚拟目录,真正起作用的是Apache的Alias指令及配套的Directory授权、SetHandler或AddHandler配置;必须同时满足路径映射、显式授权(Require all granted)和PHP解析绑定,否则会出现403、404或PHP文件被下载等问题。

PHP 本身不创建虚拟目录,真正起作用的是 Apache 的 Alias 指令和配套的权限与处理器配置。所谓“PHP 创建虚拟目录”,其实是通过 Apache 配置,让某个 URL 路径(如 /api)指向项目外部的物理目录,并确保其中的 PHP 文件能正常执行——不是下载源码,也不是报 403。
基础配置:Alias + Directory 授权
这是最常用、最稳妥的方式,适用于 Linux(CentOS/Ubuntu)和 Windows 下的 Apache 2.4+(含 PHP 8.1–8.4):
-
Alias定义 URL 映射关系(只做路径映射,不带权限) - 紧随其后的
块必须匹配真实路径,并显式授权 -
Require all granted是 Apache 2.4+ 必须项,漏掉就 403
示例(加到 /etc/httpd/conf.d/myapp.conf 或 httpd.conf 末尾):
Alias /myapp "/var/www/shared/myapp"
<directory>
Require all granted
Options FollowSymLinks
AllowOverride All
</directory>
✅ 此时访问 https://example.com/myapp/index.html 可打开静态文件;但 PHP 文件仍会下载——因为还没告诉 Apache “这里要走 PHP 解析器”。
关键一步:启用 PHP 解析
Alias 路径默认不继承主站点的 PHP 处理规则,必须手动绑定。推荐两种写法:
-
用
+SetHandler(精准控制):
只对.php后缀生效,避免误解析图片或 JS -
用
AddHandler(简洁通用):
按扩展名绑定,适合标准 PHP 项目
补全上面的 块:
<directory>
Require all granted
Options FollowSymLinks
AllowOverride All
<filesmatch>
SetHandler application/x-httpd-php
</filesmatch></directory>
或(等效写法):
<directory>
Require all granted
Options FollowSymLinks
AllowOverride All
AddHandler application/x-httpd-php .php
</directory>
Windows 环境特别注意点
路径分隔符统一用正斜杠 / 或双反斜杠 \;含空格或中文时,路径必须加英文双引号:
Alias /demo "D:/My Projects/php-demo"
<directory projects>
Require all granted
Options FollowSymLinks
AllowOverride All
<filesmatch>
SetHandler application/x-httpd-php
</filesmatch></directory>
同时确认 httpd.conf 中已启用模块:
LoadModule alias_module modules/mod_alias.so LoadModule php_module "D:/php/php8apache2_4.dll"
验证与排错提示
配置完务必执行:
-
sudo apachectl configtest(Linux)或httpd -t(Windows)检查语法 -
sudo systemctl restart httpd(CentOS)或重启 Apache 服务 - 查看错误日志:
/var/log/httpd/error_log或logs/error.log
典型报错对照:
- 404 Not Found → Alias 路径拼写错误,或真实目录不存在
-
403 Forbidden →
Require all granted缺失,或 SELinux/Windows 权限未放开 -
PHP 文件被下载 → 缺少
SetHandler或AddHandler,或mod_php未加载
不复杂但容易忽略。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











