Apacheconfiguration:“没有可用的套接字”

我试图configurationapache2(它在Enfinity Suite内部configuration),但似乎configuration出了问题。

如果我设置:

听86

它说:

(OS 10048)通常只允许使用每个套接字地址(协议/networking地址/端口):make_sock:无法绑定到地址0.0.0.0:86没有可用的套接字,closures

如果我设置:

听127.0.0.1:86

它说:

(OS 10013)试图以访问权限禁止的方式访问一个soSt。 :make_sock:无法绑定到地址127.0.0.1:86没有可用的侦听套接字,closures

如果我设置一个高于450的端口,可以说Listen 127.0.0.1:8080,它表示:

(OS 10048)通常只允许使用每个套接字地址(协议/networking地址/端口):make_sock:无法绑定到地址0.0.0.0:450没有可用的侦听套接字,closures

有人可以澄清是怎么回事? (有些Windows策略?)

可能你的apache进程会以一个有效的用户运行,而不是用户启动它。 确保启动它的用户有权创build监听套接字(对于端口<1024,这应该只是根)。 还要确保您要使用的端口尚未被占用(使用netstat -an )。

它没有关于错误消息的差异的线索。

是的,你应该以root身份启动apache并降低它自己的权限,但是它必须是root,所以它可以绑定到上面提到的小于1024的端口。

你也可以试试netstat -nap | grep LISTEN在Linux中,并寻找在该端口上侦听的东西,-p会告诉你哪个程序已经绑定到该端口。 如果不使用Linux,还有其他工具,如lsof,会告诉你这些信息不够干净。

你得到的这些错误来自Winsock。 快速入门 :

  • 操作系统10013 :访问被拒绝
  • OS 10048 :地址已被使用

您需要以pipe理员等效的用户身份运行Apache2,以便绑定到1000以下的端口,但是您尝试绑定到:8080应该可以像普通用户那样工作。 有可能是别的东西露营那个港口,你倒霉了。 你可以通过在cmd提示符下运行netstat -ano |find "LIST"来find是什么(请注意,这不是像Linux一样的)。 这将给你什么是露营端口的进程ID,然后你可以在任务pipe理器中查找。

外部的可能性是,你看到的是由于某种原因两次启动Apache2的尝试。 第一个实例正确地绑定到正确的端口,但第二个实例不能,因为第一个卡住了它。 如果是这样的话,你可能会有一些加倍的日志文件,时间戳真的很接近。