mac上的apache突然访问不了,老方法排查无果,在豆包的帮助下发现,原来是Homebrew 不认识新版 macOS造成的。
1、先问一句
apache是 macOS 系统自带 Apache 还是自己装的 Homebrew Apache / MAMP?这两个的排查方法不太一样,我的是自己Homebrew安装的。
2、一般apache问题排查思路
这个是通常的做法,但不适用于本次。
2.1、查看状态
sudo apachectl status
# 或
sudo lsof -i :80
- 有输出 → 服务在运行
- 无输出 → 服务没启动 / 没监听 80
2.2、检查 Apache 配置语法
如果服务没有运行,则启动服务,若服务启动失败,则先查看是否有语法错误
~ sudo apachectl configtest
Syntax OK
- Syntax OK:配置文件语法正确
- Syntax error:配置文件语法有错误
2.3、看日志错误
tail -n 50 /var/log/apache2/error_log #系统自带apache的日志文件
或
tail -n 50 /opt/homebrew/var/log/httpd/error_log #Homebrew安装的apache的日志文件
3、本次排查过程
一般情况,上面第2节的方法就可以解决问题,但是本次不行,才有了询问apache是自带的还是homebrew安装的问题
3.1、查看 Homebrew Apache 状态
brew services list | grep httpd
3.2、查看它到底有没有监听 80/8080
sudo lsof -Pn -i TCP | grep LISTEN | grep httpd
- 有输出 → 启动成功
- 没输出 → 启动失败
3.3、本次Apache崩掉的原因
执行 brew services list | grep httpd就 显示报错了
brew services list | grep httpd
/opt/homebrew/Library/Homebrew/macos_version.rb:53:in `initialize': unknown or unsupported macOS version: "26.4.1" (MacOSVersion::Error)
原来是前几天把 电脑系统升级到了 26.4.1,macOS版本太新了,Homebrew 还不认识,直接罢工了。
解决方法就是更新Homebrew
3.4、强制更新 Homebrew (修复版本识别)
brew update-reset
这一个命令需要比较长的时间来执行,本次执行完这一步,apache就恢复正常了,但是豆包给的答案还有后面两步,贴出来,仅供参考。
3.5、再更新一遍
brew update
3.6、修复权限
sudo chown -R $(whoami) $(brew --prefix)/*
修复完重启apapche即可。