在 CentOS 7 上搭好 LAMP 环境后,用 VS Code 的 Remote-SSH 连虚拟机一切正常,但在物理机浏览器输入虚拟机 IP 访问 PHP 页面时,却始终显示“连接超时”或无法访问。
问题根源
SSH 能连上虚拟机(走 22 端口),不代表 Web 服务也能正常访问(走 80 端口)。两者是独立通道,互不影响。排查后发现通常是以下三个原因之一:
- Apache 服务未启动 之前多次重启虚拟机或折腾网络配置,Apache 可能没有设置开机自启,导致服务处于停止状态。
- 防火墙拦截了 80 端口 CentOS 7 默认开启 firewalld,外部对 80 端口的访问请求会被直接丢弃,浏览器等待响应直到超时。
- 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。
本人真实踩坑记录,内容由AI帮助润色。