【问题标题】:48)Address already in use: AH00072: make_sock: could not bind to address [::]:8048)地址已在使用:AH00072:make_sock:无法绑定到地址[::]:80
【发布时间】:2018-12-05 11:01:18
【问题描述】:

当我尝试访问任何文件夹或文件时出现 apache 错误,它返回 Http Not foundForbidden 我正在尝试重新启动并启动 apache

sudo apachectl restart

输出:

(48)Address already in use: AH00072: make_sock: could not bind to address [::]:80
(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

我想阻止它

sudo apachectl stop

输出

httpd (no pid file) not running

我跑sudo lsof -i:80

输出:

COMMAND   PID USER   FD   TYPE             DEVICE SIZE/OFF NODE NAME

    httpd    8904 root    5u  IPv6 0x21884d81f1597d8f      0t0  TCP *:http (LISTEN)
    httpd    9012 _www    5u  IPv6 0x21884d81f1597d8f      0t0  TCP *:http (LISTEN)
    httpd   12726 _www    5u  IPv6 0x21884d81f1597d8f      0t0  TCP *:http (LISTEN)
    httpd   12731 _www    5u  IPv6 0x21884d81f1597d8f      0t0  TCP *:http (LISTEN)
    httpd   12732 _www    5u  IPv6 0x21884d81f1597d8f      0t0  TCP *:http (LISTEN)

有什么办法解决这个问题吗?

有用的信息:

OS X El Capitan

【问题讨论】:

标签: php macos apache localhost


【解决方案1】:

在我的带有 Mojave (10.14.1) 的 Mac 中,突然 Apache 无法再提供 ipv4 服务,然后给了我错误 403。我试图杀死所有 apache (sudo killall httpd)...检查 de PID's on (sudo lsof | grep AMP | grep apache)...甚至没有工作...只是 ipv6 可用...仍然是错误 403。

什么对我有用:禁用 OSX 的内置 Apache 服务器。

sudo launchctl unload -w /System/Library/LaunchDaemons/org.apache.httpd.plist

之后:

sudo apachectl -k restart

要开心:)

【讨论】:

  • 工作就像一个魅力!从自动加载中删除 apachectl - 工作。
  • 谢谢,我完成了所有的 apache 设置,直到我发现这个错误改变了 sphp 版本。我在 mohave 10.14.3
  • 哇。谢谢你。尝试了很多东西,终于成功了:)
【解决方案2】:

这个帮助了我:

请编辑 httpd.conf 文件。

/usr/local/etc/httpd/httpd.conf

然后替换

Listen 80

Listen 127.0.0.1:80

重启apache

sudo apachectl -k restart

【讨论】:

  • 我试图用其他答案中提到的命令来识别阻塞端口 80 的原因,但我没有发现任何阻塞。但是您的解决方案对我有用。谢谢!
  • 我在本地 https 设置中遇到了这个问题,从 Listen 443 更新为 Listen 127.0.0.1:443,类似于下面 Evan 的说明。 - 谢谢@Nuzil
【解决方案3】:

可能会发生以下几种情况:

  1. 您运行的是不同版本的 apache。您可以通过运行which apachectl 来确保您使用的是正确的。例如,我也有两个版本的 apache /usr/sbin/apachectl/usr/local/bin/apachectl
  2. 您没有以 root 身份运行 apachectl start,尽管您似乎是。
  3. 您可以运行 sudo lsof -i:80 查看当前绑定该端口的内容

【讨论】:

  • 啊,所以你有 httpd 正在运行。我忘了什么时候了,但是 macOS 有一个更新,它改变了它正在使用的 apache 的目录并重命名了进程。它搞乱了我的本地开发环境。
  • 你可以运行sudo httpd -k stop来停止服务,然后尝试正常重启apache。我会运行which apachectl 来找出你正在使用的版本 apache 配置文件的旧位置在/etc/apache2 但苹果已经将它移动到/usr/local/etc/httpd 你可以找到服务器配置文件:apachectl -V | grep SERVER_CONFIG_FILE
  • lsof 让我走上了正轨,不知何故,我显然安装了 nginx,它抓住了端口。
【解决方案4】:

我之前也以这种方式设置过配置,但在我上次升级 OSX 后遇到了同样的问题。我试图找到在端口 80 或 443 上监听的任何东西,但在任何地方都找不到东西。我花了一段时间,但终于找到了另一篇描述实际有效的修复的文章。请记住,我使用的是 homebrew 安装并已卸载 Mac OSX 附带的默认 apache2 安装。

这是我之前在 httpd.conf 中的内容:

Listen 80

我在 ssl.conf 中有类似的东西

Listen 443 https

我必须更改我的 httpd.conf 文件以使用 localhost 的 ServerName 并在 0.0.0.0:80 上侦听,对于 ssl.conf 也是如此,但 0.0.0.0:443 https

httpd.conf:

ServerName localhost
Listen 0.0.0.0:80

和 ssl.conf

Listen 0.0.0.0:443 https

一旦我尝试重新启动它,一切都很开心。希望有帮助!我会链接到该文章,但我无法再次找到它!

【讨论】:

    【解决方案5】:

    试试

    sudo netstat -ltnp | grep ':80'
    

    输出:tcp6 0 0 :::80 :::* LISTEN 1500/apache2

    sudo kill 1500
    sudo service apache2 restart
    

    【讨论】:

      【解决方案6】:

      出现此错误是因为 apache 服务器在端口 80 中默认侦听,因此另一个服务或程序正在使用该端口并且 apache 无法启动。

      解决方案是确定正在使用该端口的程序或服务,然后关闭、禁用或卸载它。

      确定你可以运行 netstat

      sudo netstat -ltnp | grep ':80'
      

      sudo lsof -i:80
      

      在我的例子中,我同时安装了 nginx 和 apache,并且都使用了 80 端口。

      临时解决方案:停止或终止服务、程序等

      永久解决方案:

      1. 在配置文件中更改apache服务器的端口 /etc/apache2/apache2.conf
      2. 卸载使用端口 80 的服务或程序。

      在我的情况下,我需要两者,所以我决定通过禁用服务来临时修复它:

      systemctl stop MyServiceName.service
      

      如果是服务,则使用 kill 命令。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-11-11
        • 2021-02-12
        • 2014-07-10
        • 1970-01-01
        • 2018-03-20
        • 1970-01-01
        • 2012-12-25
        • 1970-01-01
        相关资源
        最近更新 更多