浏览器打不开虚拟机 PHP 页面?先检查 Apache 和防火墙

11 阅读1分钟

在 CentOS 7 上搭好 LAMP 环境后,用 VS Code 的 Remote-SSH 连虚拟机一切正常,但在物理机浏览器输入虚拟机 IP 访问 PHP 页面时,却始终显示“连接超时”或无法访问。

问题根源

SSH 能连上虚拟机(走 22 端口),不代表 Web 服务也能正常访问(走 80 端口)。两者是独立通道,互不影响。排查后发现通常是以下三个原因之一:

  1. Apache 服务未启动 之前多次重启虚拟机或折腾网络配置,Apache 可能没有设置开机自启,导致服务处于停止状态。
  2. 防火墙拦截了 80 端口 CentOS 7 默认开启 firewalld,外部对 80 端口的访问请求会被直接丢弃,浏览器等待响应直到超时。
  3. SELinux 限制访问 SELinux 有时会阻止 Apache 读取网站目录,虽然概率较小,但临时关闭可以快速排除干扰。

解决方法(三条命令搞定)

# 1. 关闭防火墙
systemctl stop firewalld

# 2. 临时关闭 SELinux
setenforce 0

# 3. 启动 Apache 服务
systemctl start httpd

执行后刷新浏览器,PHP 页面就能正常访问了。

后续建议

为避免每次重启虚拟机都要手动启动 Apache,可以设置开机自启:

systemctl enable httpd

如果希望永久关闭 SELinux,可以编辑 /etc/selinux/config,将 SELINUX=enforcing 改为 SELINUX=disabled。

2c1294fba27a93d99683105d8101f0d4.jpg

本人真实踩坑记录,内容由AI帮助润色。