登录
首页 >  文章 >  php教程

PHP配置虚拟主机步骤详解

时间:2026-06-01 11:09:49 449浏览 收藏

本文深入解析了在phpEnv环境下配置Apache虚拟主机的四大关键陷阱与正确实践:必须将虚拟主机配置文件置于conf/vhost/目录而非默认的httpd-vhosts.conf;DocumentRoot路径须严格使用正斜杠、杜绝空格中文及末尾斜杠;Directory块中必须使用Apache 2.4标准权限指令Require all granted替代旧语法;并需显式添加SetHandler代理PHP-FPM请求,否则将导致源码泄露或500错误——每一步都直击常见失败根源,帮你避开90%的配置坑,真正实现开箱即用的本地开发环境。

PHP怎样配置虚拟主机_PHP虚拟主机设置【Apache】

phpEnv 下配 Apache 虚拟主机,httpd-vhosts.conf 默认不生效,DocumentRoot 路径含空格或反斜杠必报 403,Require all granted 缺失直接拒绝访问——这三处不修正,其他配置全白搭。

确认 phpEnv 是否真走标准 httpd-vhosts.conf

phpEnv 的 Apache 配置行为和 XAMPP/WAMP 不同:它默认忽略 conf/extra/httpd-vhosts.conf,哪怕你往里写了完整 块也完全没用。实际生效的入口是 phpenv\apache\conf\vhost\ 目录下的所有 .conf 文件。

实操建议:

  • 别碰 httpd.conf 里的 Include conf/extra/httpd-vhosts.conf 行——删了或留着都一样,phpEnv 启动时根本不读这个文件
  • phpenv\apache\conf\vhost\,新建一个如 myapp.test.conf 的文件
  • 内容必须以 开头,且 ServerName 和后续 hosts 条目严格一致(比如不能写 myapp.test. 多个点)

DocumentRoot 路径写错导致 403 或 Invalid command

Windows 路径在 phpEnv 的 Apache 2.4.x 中极其敏感:D:\my app\publicD:/my app\publicD:/my project/public/ 全部触发错误——前者因空格,中间因混用斜杠,末尾斜杠则让 .htaccess 重写失效。

正确写法只有一种:

  • 全部用正斜杠:DocumentRoot "D:/my_project/public"
  • 路径不含中文、空格、括号(如 (dev))、特殊符号
  • 末尾不加斜杠,且必须指向框架的 public 目录(不是项目根目录)
  • 确保该路径下存在 index.phpindex.html,否则 Apache 默认禁止列目录,直接返回 403

Directory 权限块必须含 Require all granted

phpEnv 自带的示例配置或网上抄来的旧模板常保留 Order allow,deny + Allow from all,这是 Apache 2.2 语法。phpEnv 默认用 Apache 2.4+,遇到这种写法会启动失败或返回 403,且 error_log 里只报“AH00526: Syntax error”,不指明哪行错。

每个 内的 块必须包含且仅需这三行:

  • Options Indexes FollowSymLinks
  • AllowOverride All(Laravel/ThinkPHP 等依赖此读 .htaccess
  • Require all granted(唯一有效的放行指令;Require all denied 才是拒绝)

注意: 路径必须和 DocumentRoot 完全一致,大小写、斜杠方向都不能差。

PHP 文件显示源码或 500 报 proxy connection refused

phpEnv 默认启用 Apache + PHP-FPM 模式(非 mod_php),所以光有 DocumentRoot 不够。若没显式转发 .php 请求,Apache 就不会调用 PHP 解析器——结果就是下载源码,或 500 错误并提示 proxy: fcgi://127.0.0.1:9000 connection refused(说明 PHP-FPM 进程根本没被触达)。

必须在 块内加这段:

<FilesMatch \.php$>
    SetHandler "proxy:fcgi://127.0.0.1:9000"
</FilesMatch>

关键点:

  • 不要用 ProxyPassProxyPassMatch —— phpEnv 的 PHP-FPM 默认监听 127.0.0.1:9000SetHandler 更轻量且兼容
  • 确保 phpEnv 控制面板里 PHP-FPM 是「运行中」状态(图标绿色),端口未被其他进程占用
  • 多个虚拟主机共用同一个 PHP-FPM 实例,无需为每个站单独开进程

最后一步永远是改 C:\Windows\System32\drivers\etc\hosts,加一行 127.0.0.1 myapp.test,然后点 phpEnv 界面的「Restart Apache」——不是重载,是彻底 stop 再 start。

文中关于的知识介绍,希望对你的学习有所帮助!若是受益匪浅,那就动动鼠标收藏这篇《PHP配置虚拟主机步骤详解》文章吧,也可关注golang学习网公众号了解相关技术文章。

资料下载
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>