PHP如何绑定域名本地访问_PHP绑定域名本地访问做法【映射】

修改 hosts 文件是第一步,因为本地绑定域名本质是绕过 DNS 查询,让系统将域名直接解析到 127.0.0.1 或 ::1;不修改则浏览器无法将请求发往本地 PHP 服务。

php如何绑定域名本地访问_php绑定域名本地访问做法【映射】

为什么修改 hosts 文件是第一步

本地绑定域名本质是绕过 DNS 查询,让系统把某个域名直接解析到 127.0.0.1::1。不改 hosts浏览器根本不会把请求发到你本地的 PHP 服务。

Windows 路径:C:/Windows/System32/drivers/etc/hosts
macOS / Linux 路径:/etc/hosts

  • 用管理员(或 sudo)权限打开编辑器修改,否则保存失败
  • 新增一行即可,例如:127.0.0.1 myapp.test
  • 不要写 http://,也不加端口127.0.0.1:8000 myapp.test 无效)
  • 改完后执行 ping myapp.test,看到回复 127.0.0.1 才算生效

PHP 内置服务器如何支持自定义域名

PHP 7.4+ 的 php -S 默认只监听 127.0.0.1:8000,且不处理 Host 头校验——这意味着只要 hosts 指向正确,它就能响应 myapp.test 的请求,但需显式绑定地址。

  • 必须用 0.0.0.0:8000[::]:8000 启动,否则仅响应 localhost127.0.0.1
  • 命令示例:
    php -S 0.0.0.0:8000 router.php
  • router.php 需存在,哪怕只写 ,否则启动报错
  • 浏览器访问 http://myapp.test:8000 即可,无需额外配置

Apache / Nginx 中 PHP 项目绑定域名的关键点

和内置服务器不同,Apache/Nginx 是真正按 Host 头分发请求的,必须显式配置虚拟主机(VirtualHost),否则会落到默认站点或 404。

  • Apache:确保 httpd.confapache2.conf 中启用了 vhost_alias 模块,并在 httpd-vhosts.conf 中添加:

    ServerName myapp.test
    DocumentRoot "/path/to/your/php/project"
    
        AllowOverride All
        Require all granted
    
  • Nginx:在 nginx.conf 或站点配置文件中写:
server {
    listen 80;
    server_name myapp.test;
    root /path/to/your/php/project;
    index index.php;
location ~ /.php$ {
    fastcgi_pass 127.0.0.1:9000; # 或 unix socket
    fastcgi_index index.php;
    include fastcgi_params;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}

}

Elser AI Comics

Elser AI Comics

一个免费且强大的AI漫画生成工具,助力你三步创作自己的一出好戏

下载

立即学习PHP免费学习笔记(深入)”;

  • 改完必须重启服务:sudo apachectl restartsudo nginx -s reload
  • 如果用 MAMP/XAMPP,它们通常自带虚拟主机管理界面,但底层仍是改上述配置文件

常见 403 / 404 / 连接被拒绝问题排查

绑定域名后打不开,大概率不是 PHP 问题,而是网络层或服务层卡住了。

  • ERR_CONNECTION_REFUSED:PHP 服务根本没运行,或端口被占用;检查 lsof -i :8000(macOS/Linux)或 netstat -ano | findstr :8000(Windows)
  • ERR_CONNECTION_TIMED_OUThosts 没生效,或防火墙拦截了端口;确认 ping myapp.test 回复的是 127.0.0.1
  • 403 Forbidden:Web 服务器拒绝读取目录,常见于 Apache 的 Require all denied 默认策略,或 Nginx 的 root 路径权限不足
  • 404 Not Found:路由没匹配上,尤其用 PHP 内置服务器时,router.php 返回 false 会触发 404;检查是否漏写了该文件,或逻辑返回了 false

最易忽略的是:改了 hosts 和配置,却忘了清浏览器 DNS 缓存(Chrome 地址栏输 chrome://net-internals/#dns 点 Clear host cache)。

https://www.php.cn/faq/1975654.html

发表回复

Your email address will not be published. Required fields are marked *