必须放行firewalld的http端口:1. 启动并启用firewalld;2. 执行firewall-cmd --permanent --add-service=http并重载;3. 用firewall-cmd --list-all验证http是否在services中;4. 局域网设备访问http://服务器ip/test.php确认php响应。

要在内网服务器上让PHP项目被其他设备访问,必须确保Web服务端口(如80)对外可见,而Red Hat 8默认启用firewalld且拒绝所有入站连接——不放行HTTP,局域网内任何设备都打不开http://服务器IP/页面,哪怕PHP和Web服务器本身运行完全正常。
确认PHP与Web服务已就绪
先验证底层是否可用:打开终端,执行php -v,确认输出PHP版本号;再执行systemctl is-active httpd或systemctl is-active nginx,返回active才表示Web服务正在运行。若任一命令失败,防火墙配置无意义,需先解决环境问题。
创建测试文件/var/www/html/test.php,内容为<?php echo 'PHP OK'; ?>,然后在服务器本机用curl http://localhost/test.php验证能输出文字。这步跳过,后续放行后仍无法访问,大概率是服务没起来或文件权限不对。
启动并配置firewalld
Red Hat 8默认安装firewalld但可能未运行:
1、执行systemctl start firewalld启动服务;
2、执行systemctl enable firewalld设为开机自启,避免重启后规则丢失;
3、执行firewall-cmd --state确认返回running,否则后续命令会报错“not running”。
放行HTTP端口
方法一:按服务名放行(推荐)
执行firewall-cmd --permanent --add-service=http→firewall-cmd --reload。此方式自动放开TCP 80端口,并兼容IPv4/IPv6,语义清晰不易错。
方法二:按端口号放行(适合自定义端口)
若Web服务监听在8080端口,则执行firewall-cmd --permanent --add-port=8080/tcp→firewall-cmd --reload。注意必须指定/tcp,漏写会导致规则无效,且--permanent不能省略,否则重启firewalld后规则消失。
方法三:临时放行(仅调试用)
执行firewall-cmd --add-service=http(不带--permanent),该规则在下次firewalld重启或系统重启后自动失效。适合快速验证网络连通性,但【生产环境严禁使用】。
验证防火墙规则生效
执行firewall-cmd --list-all,检查输出中services:行是否包含http(方法一)或ports:行是否列出80/tcp(方法二)。若没有,说明--reload未执行或命令输错。
从局域网另一台电脑浏览器访问http://[服务器IP]/test.php,看到PHP OK即成功。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











