phpEnv添加域名仍404,根本原因是其仅更新内部缓存,未真实写入Nginx/Apache的server_name或ServerName配置;需手动检查vhost文件、同步修改hosts并刷新DNS缓存,且必须重载Web服务而非仅点界面重启。
phpEnv 本身不处理域名绑定,所有多域名配置都依赖于它所集成的 Web 服务器(Nginx 或 Apache)和系统 hosts 文件——PHP 层只负责接收已路由过来的请求,无法主动“指向”或“解析”域名。
为什么在 phpEnv 里加了域名还是 404?
常见现象:在 phpEnv 界面点击「添加域名」后,访问新域名仍返回 404 或跳转到默认站。根本原因不是 phpEnv 没生效,而是它背后没真正写入 Nginx/Apache 的
或
配置。
phpEnv 的「添加域名」功能仅更新其内部数据库和部分配置缓存,
不一定重写 Web 服务的虚拟主机配置文件
若你用的是 Nginx 模式,需手动检查
中
行是否包含新增域名,多个域名用空格分隔
Apache 模式下要确认
块中
和
是否都已补全
修改后必须执行
或
,仅点 phpEnv 界面上的「重启」可能不够
hosts 文件必须同步改,且格式不能错
本地测试时,DNS 不参与解析,完全靠系统
文件映射。漏掉这步,浏览器根本发不出请求到你的 phpEnv 服务。
Windows 路径:
;macOS/Linux:
每行严格为:
,中间只能是**单个空格**,不能 tab、不能带
、不能写端口(如
)
示例正确写法:
、
改完必须刷新 DNS 缓存:Windows 运行
;macOS 运行
PHP 代码里识别当前域名要用 $_SERVER['HTTP_HOST']
当多个域名共用同一套 PHP 代码时,业务逻辑常需区分来源。别用
——它取自 Web 服务器配置,固定不变;而
是客户端实际请求头里的 Host,实时准确。
PHP 8.5.5
PHP 8.5.5 是 PHP 8.5 分支的维护更新版本。该版本延续了“小步快跑”的迭代逻辑,通过深度错误修复、底层性能微调以及安全加固,旨在为开发者提供一个更健壮、更高效的运行环境。该版本严格遵守语义化版本规范,不包含破坏性变更。
下载
立即学习
“
PHP免费学习笔记(深入)
”;
判断主站与 API 域名:
动态生成资源链接:
Session 共享关键:在入口文件(如
)开头加
,注意开头的点号表示泛匹配子域
WordPress 类应用还需在
中定义:
最易被忽略的一点:phpEnv 的 Nginx 配置默认不启用
,如果某个域名未被任何
匹配,请求会落到第一个 server 块,导致内容错乱或暴露目录结构。务必手动在配置中指定一个兜底
块,并设
,返回 444 或重定向到主域。
server_nameServerName/phpenv/vhost/xxx.confserver_nameVirtualHostServerNameServerAliasnginx -t && nginx -s reloadhttpd -t && systemctl reload httpdhostsC:\Windows\System32\drivers\etc\hosts/etc/hosts127.0.0.1 域名http://:8080127.0.0.1 local.test127.0.0.1 api.local.testipconfig /flushdnssudo dscacheutil -flushcache$_SERVER['SERVER_NAME']$_SERVER['HTTP_HOST']if ($_SERVER['HTTP_HOST'] === 'api.local.test') { /* 返回 JSON */ }$base_url = 'https://' . $_SERVER['HTTP_HOST'];index.phpini_set('session.cookie_domain', '.local.test');wp-config.phpdefine('WP_HOME', 'https://' . $_SERVER['HTTP_HOST']);default_serverserver_nameserverlisten 80 default_server;