本文目录导读:

- 方法一:Apache(常见于 XAMPP、WampServer、Linux LAMP)
- 方法二:Nginx(常见于宝塔面板、LNMP、macOS 自带)
- 方法三:使用集成环境面板(最简单)
- 常见问题排查
- 总结建议
在PHP项目中配置虚拟主机,主要取决于你使用的Web服务器,目前主流的有 Apache 和 Nginx 两种。
以下是针对这两种服务器的详细配置教程,并包含常见的本地开发环境(如 XAMPP、phpStudy、宝塔)的配置方法。
Apache(常见于 XAMPP、WampServer、Linux LAMP)
开启虚拟主机模块
找到 Apache 的配置文件 httpd.conf。
去掉以下两行代码前的注释(即去掉 符号):
LoadModule vhost_alias_module modules/mod_vhost_alias.so Include conf/extra/httpd-vhosts.conf
修改 httpd-vhosts.conf 文件
文件路径通常在:
- XAMPP/WampServer:
C:\xampp\apache\conf\extra\httpd-vhosts.conf - Linux:
/etc/httpd/conf/extra/httpd-vhosts.conf或/etc/apache2/sites-available/
在文件末尾添加一个虚拟主机配置块:
<VirtualHost *:80>
# 你的项目域名(本地开发可自定义,如 myproject.test)
ServerName myproject.test
# 可选的别名,方便用不同域名访问
ServerAlias www.myproject.test
# 网站根目录——指向你的 PHP 项目文件夹
DocumentRoot "D:/www/myproject"
# 目录权限配置(必须配置,否则容易403错误)
<Directory "D:/www/myproject">
Options Indexes FollowSymLinks
# 允许覆盖 .htaccess 文件
AllowOverride All
# 允许访问
Require all granted
</Directory>
# 默认首页
DirectoryIndex index.php index.html
# 错误日志
ErrorLog "logs/myproject-error.log"
CustomLog "logs/myproject-access.log" common
</VirtualHost>
绑定 Hosts(本机测试时)
找到系统 Hosts 文件:
- Windows:
C:\Windows\System32\drivers\etc\hosts - Mac/Linux:
/etc/hosts
在文件末尾添加一行,将域名指向本机 IP:
0.0.1 myproject.test
重启 Apache
- 图形界面: 打开 XAMPP 控制面板,点击 Apache 后面的 "Restart"。
- 命令行:
sudo systemctl restart httpd或sudo service apache2 restart。
Nginx(常见于宝塔面板、LNMP、macOS 自带)
找到配置文件
Nginx 的站点配置通常放在:
- Linux:
/etc/nginx/conf.d/或/etc/nginx/sites-available/ - macOS:
/usr/local/etc/nginx/servers/
创建一个新的配置文件
myproject.conf如下:
server {
# 监听端口
listen 80;
# 域名
server_name myproject.test;
# 站点根目录
root /var/www/myproject;
# 默认首页
index index.php index.html;
# 访问日志
access_log /var/log/nginx/myproject_access.log;
error_log /var/log/nginx/myproject_error.log;
# 主请求处理
location / {
# 尝试匹配文件,若不存在则重写到 index.php(适用于 Laravel/ThinkPHP 等)
try_files $uri $uri/ /index.php?$query_string;
}
# 处理 PHP 请求并转发到 PHP-FPM
location ~ \.php$ {
# 使用 fastcgi_pass,具体地址取决于你的 PHP 版本
fastcgi_pass unix:/var/run/php/php8.2-fpm.sock; # 或 127.0.0.1:9000
fastcgi_index index.php;
# 包含默认的 fastcgi 参数
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
}
绑定 Hosts
同上,在 hosts 文件中添加 0.0.1 myproject.test。
重载 Nginx
# 测试配置是否正确 sudo nginx -t # 重新加载配置 sudo nginx -s reload # 或 sudo systemctl reload nginx
使用集成环境面板(最简单)
如果你使用的是国内常见的面板(如 宝塔面板、phpStudy、LNMP一键包),可以直接通过图形界面操作,无需手动改文件:
-
宝塔面板:
- 点击左侧“网站” -> “添加站点”。
- 输入域名(如
myproject.test),设置根目录指向你的项目文件夹。 - 点击“提交”,软件会自动帮你生成配置和 Hosts 规则(部分版本需要手动本机绑定 hosts)。
-
phpStudy:
- 点击“网站” -> “创建网站”。
- 填写域名,选择 PHP 版本,设置根目录。
- 点击“确定”,自动配置完成。
-
MAMP / Laragon:
都提供了“新建主机”或“快速添加虚拟主机”的按钮,按提示填写即可。
常见问题排查
-
403 Forbidden(禁止访问)
- 检查
DocumentRoot和<Directory>路径是否完全一致。 - 检查项目文件夹的权限,确保 Web 用户(如
www-data或www)有读取权限。 - 在
<Directory>中确认Require all granted已添加(Apache)。
- 检查
-
404 Not Found(页面未找到)
- 如果是 Nginx,重点检查
try_files配置,确保路径指向index.php。 - 如果是 Apache,确认
.htaccess文件的伪静态规则需要AllowOverride All支持。
- 如果是 Nginx,重点检查
-
访问域名跳转到官网(如 localhost)
- 说明你的 Hosts 文件绑定没生效,或者浏览器缓存了 DNS,请尝试清除 DNS 缓存(Windows 执行
ipconfig /flushdns)。
- 说明你的 Hosts 文件绑定没生效,或者浏览器缓存了 DNS,请尝试清除 DNS 缓存(Windows 执行
-
PHP 文件直接下载而不执行
- Apache 可能没有加载
php_module(确认 httpd.conf 中有LoadModule php_module且已启用)。 - Nginx 中
location ~ \.php$块是否匹配到了 PHP 文件,且fastcgi_pass的 PHP-FPM 服务是否正在运行。
- Apache 可能没有加载
总结建议
- 本地开发:如果你用的是 Windows + XAMPP,推荐用 Apache 手动配置,风险低。
- 线上服务器:推荐用 Nginx,性能更好,配置也清晰。
- 新手:直接用 phpStudy 或 宝塔,图形界面一步到位,节省时间。
配置完成后,在浏览器输入 http://myproject.test 即可访问你的 PHP 项目。