fuelphp项目需通过apache端口访问,修改httpd.conf添加listen 8082,并在httpd-vhosts.conf中配置virtualhost指向public目录、启用allowoverride all和mod_rewrite,确保documentroot正确且.htaccess生效。

修改 httpd.conf 添加监听端口
FuelPHP 本身不绑定端口,端口由 Apache 控制。XAMPP 默认只监听 80,要让 FuelPHP 项目跑在独立端口(比如 8082),必须先让 Apache “听得到”这个端口。
打开 C:\xampp\apache\conf\httpd.conf,找到 Listen 80 这一行,在它下方新增:
Listen 8082
注意:不要用 1024 以下的端口(如 80、443、21),避免权限或系统占用问题;也不要选已被 Skype、IIS、Docker 或其他服务占着的端口(可用 netstat -ano | findstr :8082 检查)。
在 httpd-vhosts.conf 中配置 FuelPHP 的虚拟主机
FuelPHP 项目通常需要重写支持(.htaccess + mod_rewrite),且入口是 public/ 目录,不能直接把整个项目根目录设为 DocumentRoot,否则会暴露 app/、core/ 等敏感路径。
编辑 C:\xampp\apache\conf\extra\httpd-vhosts.conf,末尾添加:
<virtualhost>
ServerName localhost
DocumentRoot "C:/xampp\htdocs\fuelphp-project\public"
<directory>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</directory></virtualhost>
-
AllowOverride All是必须的,否则.htaccess不生效,FuelPHP 的路由会 404 -
Require all granted替代旧版的Order Deny,Allow+Allow from all,Apache 2.4+ 必须用这个语法 -
DocumentRoot必须指向public/,不是项目根目录 —— 这是 FuelPHP 安全要求,也是最容易出错的地方
确认 mod_rewrite 已启用且 httpd-vhosts.conf 被加载
即使配置了虚拟主机,如果 Apache 没加载该文件,或重写模块没开,FuelPHP 的 URL 路由(如 /welcome)仍会 404。
检查两处:
- 在
httpd.conf中确认这行没被注释:Include conf/extra/httpd-vhosts.conf - 同样在
httpd.conf中搜索mod_rewrite,确保这行已取消注释:LoadModule rewrite_module modules/mod_rewrite.so
改完记得重启 Apache(XAMPP 控制面板点 Stop → Start)。如果启动失败,看控制台报错,大概率是 httpd-vhosts.conf 里有语法错误或路径不存在。
访问前检查 FuelPHP 的 public/.htaccess 和环境设置
默认 FuelPHP 的 public/.htaccess 是启用的,但 Windows + XAMPP 下偶尔因换行符或 BOM 头失效。打开它,确认第一行是:
RewriteEngine On
而不是空行、注释或乱码。另外,FuelPHP 需要正确识别运行环境:
- 检查
fuel/app/bootstrap.php中是否设置了Fuel::init()前的环境判断逻辑(如基于$_SERVER['HTTP_HOST']或端口) - 若用
localhost:8082访问却跳转到localhost:80,多半是fuel/app/config/production.php或development.php里硬编码了base_url - 临时调试可加一行
var_dump($_SERVER['SERVER_PORT']); die;到public/index.php开头,确认 Apache 确实把请求交到了这个端口
多端口部署本身不复杂,真正卡住人的永远是三件事:DocumentRoot 指向 public/、AllowOverride All、以及 .htaccess 是否真实生效 —— 其他都是配角。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











