Apache虚拟主机配置失效的首要原因是httpd.conf未启用httpd-vhosts.conf,必须取消#Include conf/extra/httpd-vhosts.conf注释并重启服务;其次需确保DocumentRoot指向Aura项目的public子目录、路径末尾无斜杠、Require all granted正确配置,并启用mbstring/curl/openssl等PHP扩展。

Apache必须启用httpd-vhosts.conf,否则完全不生效
很多人配完httpd-vhosts.conf发现访问localhost:8080还是跳默认站点,甚至403报错——根本原因几乎都是httpd.conf里这行被注释着:#Include conf/extra/httpd-vhosts.conf。删掉开头的#才是关键动作。
顺带检查两处:确保Listen 8080已添加(不能只改VirtualHost端口),且ServerName别写成localhost:8080这种带端口的值(Apache会启动失败)。正确写法是ServerName localhost,端口由<VirtualHost *:8080>声明。
DocumentRoot必须指向Aura项目的public/子目录,不是项目根目录
Aura框架遵循PSR-7规范,入口统一放在public/下(含index.php和.htaccess)。若把DocumentRoot设为D:/xampp/htdocs/my-aura-app,Apache会直接暴露src/、config/等敏感目录,且mod_rewrite规则失效。
正确路径示例:DocumentRoot "D:/xampp/htdocs/my-aura-app/public"。同时确认该目录下存在.htaccess,内容需包含标准重写逻辑(Aura官方推荐版本即可)。
- Windows路径中斜杠建议用正斜杠
/或双反斜杠\,单反斜杠可能被解析为转义符 - 路径末尾不能加斜杠,
"D:/xampp/htdocs/app/public/"会导致Apache启动时提示Syntax error on line X - 如果用
Require all granted仍报403,检查httpd.conf里对应<Directory>块是否覆盖到该路径,尤其注意嵌套层级
PHP扩展与Aura兼容性:必须启用mbstring和curl
Aura.Router和Aura.Di在XAMPP默认PHP配置下常因缺少扩展报错,典型现象是页面空白或Class 'AuraRouterRouterContainer' not found。这不是路径问题,而是Autoloader加载失败的表象。
打开php.ini(XAMPP控制面板→PHP→Config→php.ini),确认以下扩展已取消注释:
XAMPP 8.0.30 是一款免费、开源的跨平台 Web 服务器集成包,专为快速搭建本地 PHP 开发环境而设计。该版本核心组件包括:Apache 2.4.56、MySQL 8.0.33、PHP 8.0.30、phpMyAdmin 5.2.1 等。它支持 Windows、Linux 和 macOS 系统,可让开发者在个人电脑上轻松模拟服务器环境,无需复杂配置即可运行 WordPress、Thin
-
extension=mbstring(字符串处理,Aura基础依赖) -
extension=curl(部分Aura包如aura/session需HTTP客户端) -
extension=openssl(HTTPS请求、JWT等场景需要)
改完后必须重启Apache,仅重启PHP服务无效。验证方式:访问http://localhost/xampp/phpinfo.php,搜索mbstring看是否显示“enabled”。
端口冲突时别硬改Listen,先查PID再决策
想用:8080却启动失败?别急着改httpd.conf。先在管理员权限CMD中运行:netstat -aon | findstr :8080。如果返回类似TCP 0.0.0.0:8080 0.0.0.0:0 LISTENING 1234,说明PID 1234进程占用了它。
接着查进程:tasklist /fi "pid eq 1234"。常见情况包括:
- PID 4 → System(Windows保留端口,避开1024以下更稳妥)
- PID 1234 →
java.exe(Spring Boot或Tomcat)→ 改Java服务端口 - PID 5678 →
nginx.exe(另一套本地环境)→ 停掉或换端口
硬把Listen 8080改成Listen 8099能绕过,但若团队协作或部署文档固定端口,优先解决占用源更可持续。
多端口部署Aura最易忽略的点:每个<VirtualHost *:PORT>块里的<Directory>权限配置必须独立声明,不能复用全局设置;另外public/index.php里chdir(dirname(__DIR__));这类路径切换,在XAMPP Windows环境下对大小写不敏感,但一旦将来迁移到Linux服务器,大小写错误会直接导致autoload.php找不到。

















