48)地址已在使用中:AH00072:make_sock:无法绑定到地址[::]:80

时间:2018-06-26 16:36:19

标签: php macos apache localhost

当我尝试访问任何文件夹或文件时出现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

6 个答案:

答案 0 :(得分:12)

在装有Mojave(10.14.1)的Mac中,突然之间Apache无法再提供ipv4了,然后给了我错误403。我试图杀死所有apache(sudo killall httpd)。 lsof | grep AMP | grep apache)...甚至不起作用...只是ipv6可用...仍然错误403。

最适合我的方法:禁用OSX的内置Apache服务器。

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

之后:

sudo apachectl -k restart

开心:)

答案 1 :(得分:9)

这个帮助了我:

请编辑 httpd.conf 文件。

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

并替换

Listen 80

Listen 127.0.0.1:80

重启apache

sudo apachectl -k restart

答案 2 :(得分:6)

可能发生的几件事之一:

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

答案 3 :(得分:2)

我之前也以这种方式设置过我的配置,但在我上次升级 OSX 后遇到了同样的问题。我试图找到正在侦听端口 80 或 443 的任何东西,但在任何地方都找不到。我花了一段时间,但终于找到了另一篇文章,描述了一个实际有效的修复程序。请记住,我正在使用自制软件安装并卸载了 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

一旦我尝试重新开始,一切都很愉快。希望有帮助!我想链接到这篇文章,但我无法再次找到它!

答案 4 :(得分:0)

尝试

sudo netstat -ltnp | grep ':80'

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

sudo kill 1500
sudo service apache2 restart

答案 5 :(得分:0)

发生此错误的原因是,apache服务器在端口80上被默认监听,因此另一个服务或程序正在使用该端口,并且apache canot启动。

解决方案是确定正在使用哪个程序或服务的端口,然后关闭,禁用或取消安装它。

确定您可以运行netstat

year

sudo netstat -ltnp | grep ':80'

在我的情况下,我同时安装了nginx和apache,并且都使用端口80。

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

永久解决方案:

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

就我而言,我需要两者,所以我决定通过禁用服务来临时修复它:

sudo lsof -i:80

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