phpenv默认首页顺序由apache的directoryindex指令控制,需手动编辑httpd.conf或httpd-vhosts.conf中directoryindex行(如directoryindex index.php index.html),并确保php模块已启用、.php后缀正确解析,最后完全重启apache生效。

phpEnv 默认首页顺序由 Apache 的 DirectoryIndex 指令控制,不是改文件名或放错位置就能生效;必须手动编辑配置并重启 Apache。
确认当前 phpEnv 使用的 Apache 配置文件位置
phpEnv 默认将 Apache 配置放在安装目录下的 Apache/conf/httpd.conf(例如 D:\phpEnv\Apache\conf\httpd.conf)。部分版本也可能在 Apache/conf/extra/httpd-vhosts.conf 中定义虚拟主机时覆盖该指令。打开前先检查是否启用了 Include conf/extra/httpd-vhosts.conf 这类包含语句——若启用,优先改 httpd-vhosts.conf 里的对应 <virtualhost></virtualhost> 块。
常见错误现象:改了 httpd.conf 却没生效,其实是虚拟主机配置里重复写了 DirectoryIndex,后加载的覆盖了前面的。
- 用文本编辑器搜索整个
conf目录下所有DirectoryIndex出现的位置 - 重点关注
<virtualhost></virtualhost>或<directory></directory>块内的定义 - 确保只保留一处有效配置,避免冲突
修改 DirectoryIndex 并确保 PHP 模块已启用
找到 DirectoryIndex 行,把它改成你想要的顺序,比如让 index.php 优先于 index.html:
DirectoryIndex index.php index.html index.htm
但仅改这一行还不够——如果 Apache 没把 .php 文件交给 PHP 解析器处理,访问 index.php 会直接下载或显示源码。
- 确认
LoadModule php_module和PHPIniDir已在httpd.conf中启用(通常 phpEnv 自带开启) - 检查是否存在
AddHandler application/x-httpd-php .php或等效的<filesmatch></filesmatch>块 - 若使用 PHP-FPM 模式(较新 phpEnv 版本可能默认),需确认
ProxySet或SetHandler "proxy:fcgi://127.0.0.1:9000"正确指向 PHP-FPM 进程
重启 Apache 才能让改动真正生效
phpEnv 界面右上角的「重启 Apache」按钮有时不触发完整重载,尤其在配置语法有隐性问题时。更可靠的做法是:
- 点 phpEnv 主界面右上角「服务」→「Apache」→「停止」,再「启动」
- 或进命令行执行:
cd D:\phpEnv\Apache\bin && httpd.exe -k restart - 若提示「Syntax error」,用
httpd.exe -t检查配置语法
注意:仅点击面板上的「重载配置」或刷新网页不会更新 DirectoryIndex 顺序,Apache 必须完全重启才能重新读取该指令。
子目录想用自己独立的默认页?.htaccess 可以,但有限制
比如你希望 /items/ 目录下访问 http://localhost/items/ 时优先加载 items/home.php 而非根目录的 index.php,可以在 items/.htaccess 里写:
DirectoryIndex home.php index.php index.html
但这个只对直接访问 /items/ 有效;如果该目录还需接管所有子路径(如 /items/edit/123),就得靠 RewriteRule,而不是改 DirectoryIndex。
-
DirectoryIndex只影响「目录裸路径」(即结尾是/或无后缀的请求) -
.htaccess在子目录中生效的前提是父目录的AllowOverride All已开启(phpEnv 默认开启) - 若子目录
.htaccess不生效,大概率是上层<directory></directory>块里写了AllowOverride None
最易被忽略的一点:phpEnv 的 Apache 默认监听的是 127.0.0.1:80,但某些 Windows 防火墙或 Skype 会占这个端口,导致看似重启成功实则 Apache 根本没起来——访问时浏览器卡住或报连接拒绝,此时要先查端口占用。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











