重新安装并修复 macos 上的 httpd 服务错误

cer*_*ini 5 macos apache2 macos-big-sur

在 BigSur 上更新我的 MacOs 后,我在使用 httpd(又名 Apache2)时仍然遇到一些问题。

我尝试使用 brew httpd 服务(如许多教程中所述)重新安装 apache2,但它仍然无法正常工作。我总结了所采取的步骤,并添加了一些调试命令。

要重新安装我完成了:

sudo apachectl stop
sudo launchctl unload -w /System/Library/LaunchDaemons/org.apache.httpd.plist 2>/dev/null

brew install httpd
Run Code Online (Sandbox Code Playgroud)

之后我重新启动并启动命令:

brew services start httpd
==> Successfully started `httpd` (label: homebrew.mxcl.httpd)
Run Code Online (Sandbox Code Playgroud)

但是如果我运行以下命令:

brew services list
Name              Status  User            Plist
dnsmasq           started root            /Library/LaunchDaemons/homebrew.mxcl.dnsmasq.plist
fuseki            stopped                 
httpd             error   matteo.ceradini /Users/matteo.ceradini/Library/LaunchAgents/homebrew.mxcl.httpd.plist
mongodb-community started matteo.ceradini /Users/matteo.ceradini/Library/LaunchAgents/homebrew.mxcl.mongodb-community.plist
unbound           stopped 
Run Code Online (Sandbox Code Playgroud)

如您所见,httpd 处于错误状态(实际上转到 localhost:8080 我收到错误),我不明白为什么。

任何建议如何解决这个问题?

谢谢你。

小智 11

我刚刚在蒙特利遇到了完全相同的问题。经过深入研究,问题似乎是未找到符号 ( _apr_bucket_alloc_aligned_floor),预计在: 中/usr/lib/libaprutil-1.0.dylib

重新安装 apr-util 修复了我的情况:

brew reinstall apr-util
Run Code Online (Sandbox Code Playgroud)


cer*_*ini 6

有些东西似乎不起作用,但我仍然找不到原因。

我停止了所有服务(sudo brew 和不带 sudo 的 brew),然后运行以下命令:

sudo lsof -i :80
sudo lsof -i :8080
sudo lsof -i tcp:80
sudo lsof -i tcp:8080
Run Code Online (Sandbox Code Playgroud)

结果总是一事无成。但如果我跑:

sudo brew services start httpd    
==> Successfully started `httpd` (label: homebrew.mxcl.httpd)
Run Code Online (Sandbox Code Playgroud)

httpd 不会启动(即使在终端命令中它说是):

sudo brew services list
               
httpd             error   root            /Library/LaunchDaemons/homebrew.mxcl.httpd.plist
Run Code Online (Sandbox Code Playgroud)

如果我检查 apachetl 错误,我总是会发现端口 80 已被占用,即使该端口上没有进程:

apachectl -e error
(48)Address already in use: AH00072: make_sock: could not bind to address 0.0.0.0:80
no listening sockets available, shutting down
AH00015: Unable to open logs
Run Code Online (Sandbox Code Playgroud)

我迫切需要为这个错误找到解决方案。似乎在某些 httpd 中已损坏,即使我卸载并重新安装

更新:

我真的不知道我是怎么做到的,但现在它正在起作用。我停止了所有 brew httpd 服务,并使用以下命令重新启动 apache:

sudo apachectl -k start
Run Code Online (Sandbox Code Playgroud)

这对我有用

  • 哇,与大苏尔更新相同的问题。各种误导性的酿造服务状态。我必须首先关闭所有的brew服务,然后运行“sudo apachectl -k stop”,然后再运行“sudo apachectl -k start”,这使brew的httpd / Apache恢复了生机。 (3认同)

Yum*_*nc. 1

第一个答案:听起来服务启动正常,然后(或立即)死亡,并报告错误。使用命令 'apachectl -e error' 应该提供详细信息,但您想检查日志('vi /usr/local/var/log/httpd/error_log',然后 shift-G [转到结束])。

第二个(解释)答案:“如果您使用(sudo) brew services... 启动 httpd,则必须使用正确的(sudo) brew services list命令来检查状态:

如果您以 root 身份启动它,则使用 root 权限列出它:

sudo brew services start httpd>sudo brew services list

或使用用户权限:

brew services start httpd> brew services list. ”