1

尝试启动 apache 时出现以下错误:

(OS 10013) 试图以访问权限禁止的方式访问套接字。: make_sock: 无法绑定到地址 0.0.0.0:80 没有可用的监听套接字,正在关闭。无法打开日志

我可以提前开始。我想在我启用 Windows '.NET Framework 3.5' 的功能之后。现在我无法正常启动它。我检查了端口:

netstat -aon|findstr "80"
 TCP    0.0.0.0:80             0.0.0.0:0              LISTENING       4
 TCP    [::]:80                [::]:0                 LISTENING       4
tasklist|findstr "4"
System Idle Process              0 Services                   0         24 K
System                           4 Services                   0        304 K

如何解决这个问题?

4

2 回答 2

2

在网上搜索解决方案后,我看到有人指责 MS SQL 报告服务、所有 MS SQL 服务、Windows 远程管理服务等。但一篇文章有​​一个有用的诊断命令,允许跟踪 w3svc 的侦听服务。

TMG 无法在端口 80 上侦听(未安装 IIS)作者 Ori Yosefi,MSFT,2010 年 10 月 15 日

    e:\DIR>netsh http show servicestate

    Snapshot of HTTP service state (Server Session View):
    -----------------------------------------------------

    Server session ID: FF00000320000001
        [..]
        URL group ID: FE00000340000001
                [..]
                Registered URLs:
                    HTTP://*:80/

    Request queues:
        Request queue name: DefaultAppPool
            [..]
            Controller process ID: 2724
            Process IDs:
                5412

我可以使用 tasklist 命令查看在检测到的 PID 下运行的服务。

    e:\DIR>tasklist /svc
    [..]
    svchost.exe                   2724 W3SVC, WAS
    [..]

我可以查询这些服务的配置细节。

    e:\DIR>sc qc w3svc
    [SC] QueryServiceConfig SUCCESS

    SERVICE_NAME: w3svc
            TYPE               : 20  WIN32_SHARE_PROCESS
            START_TYPE         : 2   AUTO_START
            ERROR_CONTROL      : 1   NORMAL
            BINARY_PATH_NAME   : C:\Windows\system32\svchost.exe -k iissvcs
            LOAD_ORDER_GROUP   :
            TAG                : 0
            DISPLAY_NAME       : World Wide Web Publishing Service
            DEPENDENCIES       : WAS
                               : HTTP
            SERVICE_START_NAME : LocalSystem


    e:\DIR>sc qc was
    [SC] QueryServiceConfig SUCCESS

    SERVICE_NAME: was
            TYPE               : 20  WIN32_SHARE_PROCESS
            START_TYPE         : 3   DEMAND_START
            ERROR_CONTROL      : 1   NORMAL
            BINARY_PATH_NAME   : C:\Windows\system32\svchost.exe -k iissvcs
            LOAD_ORDER_GROUP   :
            TAG                : 0
            DISPLAY_NAME       : Windows Process Activation Service
            DEPENDENCIES       : RPCSS
            SERVICE_START_NAME : LocalSystem

我无法阻止他们以普通用户身份运行命令行。

    e:\DIR>net stop w3svc
    System error 5 has occurred.

    Access is denied.


    e:\DIR>net stop was
    The following services are dependent on the Windows Process Activation Service service.
    Stopping the Windows Process Activation Service service will also stop these services.

       World Wide Web Publishing Service
       Net.Tcp Listener Adapter
       Net.Pipe Listener Adapter

    Do you want to continue this operation? (Y/N) [N]: y
    System error 5 has occurred.

    Access is denied.

然后我通过服务 GUI 停止了万维网发布服务,services.msc. 我还将此服务的启动类型更改为手动。之后没有服务监听 TCP 端口 80。

    e:\DIR>netstat -ano
    [..no process listening on TCP port 80..]
于 2011-07-26T00:08:52.250 回答
0

也许你已经达到了 TCP 时间等待状态?http://msdn.microsoft.com/en-us/library/ms819739.aspx

“TIME-WAIT 确保有足够的时间过去,以确保任何可能被错误路由或延迟的 TCP 段不会意外传送到具有相同连接设置的新的、不相关的应用程序。RFC 793:传输控制协议 DARPA 互联网程序协议规范指定不应重复使用套接字对的时间长度为两个最大段生命周期 (MSL),即四分钟。此时间段是 Windows Server 2003 TCP/IP 的默认设置。

服务器应用程序经常使用SO_REUSEADDR套接字选项,因此它们可以快速重新启动,但也许您的 Apache 构建没有?

你会在四分钟后知道它是否“正常工作”。:)

于 2011-01-26T10:11:31.770 回答