需先停用macOS内置Apache服务:执行sudo apachectl stop,再用lsof -i :80确认无输出;若仍有占用,用sudo lsof -i :80查PID并kill -9,或检查brew services中httpd/nginx并停止;最后执行sudo launchctl unload -w /System/Library/LaunchDaemons/org.apache.httpd.plist禁用开机自启。

ThinkPHP项目在macOS上启动Apache时提示“Address already in use: AH00072”,说明80端口已被占用,无法绑定监听——这不是配置写错了,而是系统服务或残留进程抢了端口。
确认是否是macOS内置Apache占坑
Mac自带Apache服务,默认监听80端口,且开机自启。先停掉它:
打开终端,执行 sudo apachectl stop,输入密码后等待返回;
再执行 lsof -i :80,若无任何输出,说明内置Apache已退出。
这一步必须做,否则后续所有修改都无效——【apachectl stop只终止当前实例,不卸载服务,重启后可能自动拉起】。
查杀其他进程占用80端口
如果停掉内置Apache后仍报错,说明另有进程在用80端口:
立即学习“PHP免费学习笔记(深入)”;
方法一:用lsof定位并强制终止
执行 sudo lsof -i :80,查看COMMAND列和PID列;
对准PID执行 sudo kill -9 PID号(例如 sudo kill -9 1234);
再次运行 lsof -i :80 验证是否清空。
方法二:检查Homebrew服务链
执行 brew services list | grep http,若看到httpd、nginx等状态为started,执行 brew services stop httpd 或 brew services stop nginx;
Homebrew安装的服务常静默监听80,且不显示在普通lsof结果里。
永久释放80端口(可选)
避免每次重启后又被占,需禁用系统级HTTP服务:
第一步:禁止launchd自动加载内置Apache
执行 sudo launchctl unload -w /System/Library/LaunchDaemons/org.apache.httpd.plist;
该命令会移除开机自启标记,但不删除文件,安全可逆。
第二步:确认无残留监听
重启终端,执行 lsof -i :80 和 sudo lsof -i :443 两次,均应无输出;
此时再启动ThinkPHP配套的Apache(如phpstudy、xampp或自编译版本),即可正常绑定80端口。



















