如何在 localhost Windows 上释放我的端口 80?

Posted

技术标签:

【中文标题】如何在 localhost Windows 上释放我的端口 80?【英文标题】:How do I free my port 80 on localhost Windows? 【发布时间】:2010-10-21 18:16:23 【问题描述】:

我安装了 XAMPP 1.6.8,但由于某种原因它不起作用。后来意识到80端口不是空闲的或者没有监听。我怎样才能释放它或让它免费?

非常感谢!

【问题讨论】:

***.com/a/16251034/1339004 ***.com/questions/750604/freeing-up-a-tcp-ip-port 我相信这是一个重复的问题(请在那里找到答案)-> ***.com/questions/1430141/… 复制与否。这是Google 的第一次点击。 【参考方案1】:

以编程方式识别真实进程

(当进程ID显示为4时)

和往常一样,这里的答案需要一定程度的交互性。

问题是当某些东西通过 HTTP.sys 进行监听时;那么,PID 始终为 4,并且正如大多数人所发现的那样,您需要一些工具来找到真正的所有者。

以下是如何以编程方式识别违规进程。没有 TcpView 等(与那些工具一样好)。是否依赖 netsh;但是,问题通常与 HTTP.sys 有关。

$Uri = "http://127.0.0.1:8989"    # for example


# Shows processes that have registered URLs with HTTP.sys
$QueueText = netsh http show servicestate view=requestq verbose=yes | Out-String

# Break into text chunks; discard the header
$Queues    = $QueueText -split '(?<=\n)(?=Request queue name)' | Select-Object -Skip 1

# Find the chunk for the request queue listening on your URI
$Queue     = @($Queues) -match [regex]::Escape($Uri -replace '/$')


if ($Queue.Count -eq 1)

    # Will be null if could not pick out exactly one PID
    $ProcessId = [string]$Queue -replace '(?s).*Process IDs:\s+' -replace '(?s)\s.*' -as [int]

    if ($ProcessId)
    
        Write-Verbose "Identified process $ProcessId as the HTTP listener. Killing..."
        Stop-Process -Id $ProcessId -Confirm
    

原帖在这里:https://***.com/a/65852847/6274530

【讨论】:

【参考方案2】:

我遇到了同样的问题,并通过在 httpd.conf 文件中进行小幅更改来修复它,该文件可以通过单击配置按钮和 Apache 选项来获得。

我所做的更改是将listen 80替换为listen 8080。

【讨论】:

【参考方案3】:

我试图从这里安装nginx - http://nginx.org/en/docs/windows.html

转到http://localhost/ 会显示一些东西,至少是正确的“未找到”消息 这是因为 80 是默认端口,被其他进程占用了。

现在运行以下命令:

net stop http

    // Above command stopped below services  
    // - SSDP Discovery  
    // - Print Spooler  
    // - BranchCache  
    // - Function Discovery Resource Publication  
    // - Function Discovery Provider Host  

现在,转到http://localhost/ 将失败,并显示链接页面消息损坏。

主进程是BranchCache 此进程停止后,将在几秒钟后重新启动。 所以我们需要尽快运行其他我们需要的命令,下面是一个例子:

// this will stop
net stop http

// immeidately run other command you want to
start nginx

现在,去http://localhost/给了我:

Welcome to nginx!

希望对您有所帮助。

【讨论】:

【参考方案4】:

我之前遇到过这个问题,

如果您看到任务管理器(启用 PID 视图后),您会发现 PID=4 是“NT Kernel & System 正在使用的端口 80;”

去吧

    控制面板 程序 打开/关闭 Windows 功能 检查IIS下的World wide web services是否被选中

如果是这样,请取消选中并再次 netstat(或 TCPVIEW)以查看 80 是否空闲。

【讨论】:

Win7:开始菜单搜索“IIS”会弹出“IIS管理器”,您可以在其中禁用服务器。 这对我有用。我试图在 Windows 上使用 nginx,它不会绑定给出 nginx: [emerg] bind() to 0.0.0.0:80 failed (10013: An attempt was made to access a socket in a way forbidden by its access permissions) 错误。网上提到了很多修复,但这是最直接的一个。我确实需要重新启动。【参考方案5】:

侦听端口 80 的已知 Windows 服务

从服务管理器(运行:services.msc),停止并禁用这些已知绑定到端口 80 的 Windows 服务。

双击Service,将“Startup Type”改为“Disabled”……

    SQL Server 报告服务 (ReportServer) Web 部署代理服务 (MsDepSvc) BranchCache (PeerDistSvc) 同步共享服务 (SyncShareSvc) 万维网发布服务 (W3SVC) Internet 信息服务器(WAS、IISADMIN)

skype 也使用端口 80 作为默认设置,您可以取消选中它。

您可能会或可能不会安装并运行其中一些服务。

在我的例子中,“SQL Server Reporting Services”打开了 80 端口。

【讨论】:

谢谢,这解决了我的问题。 “SQL Server Reporting Services”也为我使用了端口 90。【参考方案6】:

试试

netstat -anb -p tcp

显示端口和进程

【讨论】:

我的 xampp 应用程序状态显示 apache 和 mysql 状态 1 启动 1 服务 1 但是浏览器仍然没有显示本地主机。为什么这样?任何指针? :(【参考方案7】:

我也遇到了同样的问题。 net stop http 没有帮助,并且未选中 Windows 控制面板中 IIS 下的 万维网服务 选项。因此,在 XAMPP 控制面板中,我只检查了 Apache 开始按钮(将 Apache 安装为服务)附近的 Svc 复选框并重新启动了 Windows。现在每次 Windows 启动时,Apache 都会自动启动并在任何其他服务之前占用端口 80。为我工作!

【讨论】:

【参考方案8】:

在命令行中输入“netstat -ano”。我看到它显示了本地地址端口 0.0.0.0:80 的内容。

我的问题是因为我在端口 80 上有 SQL Server Reporting Services。所以我按照这些说明将端口号从 80 更改为 81:

http://seankilleen.com/2012/11/how-to-stop-sql-server-reporting-services-from-using-port-80-on-your-server-field-notes/

这是我更改 SQL Server Reporting Services 的端口号后的命令行图片:

如果您仍然遇到同样的问题,请阅读此论坛:

http://forum.wampserver.com/read.php?2,66196,66233#REPLY

【讨论】:

【参考方案9】:

您可以使用net stop http 它将显示正在使用的进程。大多数万维网服务都在使用

【讨论】:

【参考方案10】:

netstat -ano

这将显示正在侦听端口 80 的进程的 PID。 之后,打开任务管理器 -> 进程选项卡。在View -&gt; Select Columns 菜单中,启用PID 列,您将看到侦听端口80 的进程名称。

【讨论】:

这很好,因为可以有其他同名的进程。我想知道 Windows 中是否有任何 kill 命令可以针对找到的 PID 运行,而不是通过任务管理器执行。 taskkill 不会终止任务。它仍然显示端口 80 正在运行。 @Jijo 你能不能试试最后使用/f /t,它会强行杀死任务,我现在是linux系统,未验证【参考方案11】:

netstat -a -b

应该告诉你80端口绑定了什么程序

【讨论】:

它只是给了我字节、单播等等等,没有给出端口 80 上的绑定。我错过了什么吗? 我试过了,它说“请求的操作需要提升” 你是上帝! 鞠躬,通过这个我能够找到与其他人具有相同进程ID的实际服务名称,因此在从任务管理器中杀死实际服务之前无法弄清楚。真的谢谢! 对我来说:can not obtain ownership information - 现在怎么办?【参考方案12】:

Skype 喜欢使用端口 80 并阻止 IIS。那是我的问题。

【讨论】:

【参考方案13】:

这种痛苦已经为我解决了。我发现接管 80 端口的是 http api 服务。我在cmd中写了:

net stop http

问我“以下服务将停止,您要继续吗?”按 y

它实际上停止了一些服务。

然后写localhost 和wallah,Apache 已启动并在端口80 上运行。 希望这会有所帮助

重要提示:Skype 默认使用 80 端口,您可以在 Skype 选项 > 高级 > 连接中更改此项 - 并取消选中“使用端口 80”

【讨论】:

在 Windows 7 上,由于“拒绝访问”,我无法停止进程,但它向我显示了如果我有权限将被杀死的进程的名称(我没有权限对于 netstat -a -b)。 @PavelV。您应该使用管理权限运行命令提示符。打开开始,并在搜索“cmd”中写入,右键单击cmd并选择以管理员身份运行。【参考方案14】:

对我来说,这个问题始于我在我的 Windows 8 计算机上托管 *** 连接。

只需从“控制面板\网络和 Internet\网络连接”中删除连接即可解决问题。

【讨论】:

答案无关紧要这个问题是关于打开一个端口而不是***连接。【参考方案15】:

在提升的命令提示符中使用 netstat -bano 来查看哪些应用正在侦听哪些端口。

但通常以下应用程序在 windows 中使用端口 80。

    IIS 万维网发布服务 IIS 管理服务 SQL Server 报告服务 Web 部署代理服务

如果正在运行,请停止上面的应用程序并检查!!!

【讨论】:

你知道如何确保这些服务不使用80端口吗? Dafuq 有效,我已停止所有 HTTP 服务,但仍拒绝使用 80 端口。现在手动检查服务后它已经工作了非常感谢老兄,上帝保佑你【参考方案16】:

这只是一个猜测,但由于端口 80 是 HTTP 的常规端口,因此您的系统上可能正在运行一个网络服务器。 IIS 是否处于活动状态?

如果您正在运行 IIS,您可能正在运行 Web 场服务。这就是杀死我的 xampp 的原因。

【讨论】:

不,我没有 IIS。我之前确实使用过xampp,它已经奏效了。我猜其他一些服务位于端口 80 上,不允许在其上重新安装 Apache 服务。 Skype 还喜欢盗取 80 端口,一个常见的意外罪魁祸首!【参考方案17】:

尝试的其他选项是停止 SQL Server Reporting Services。

【讨论】:

谢谢,对我来说是 SQL Server Reporting Services (MSSQLSERVER) 不知道为什么,但是当我通过服务控制台终止它时,使用 pid 4 从 0.0.0.0:80 解除绑定【参考方案18】:

使用TcpView查找监听端口的进程并关闭该进程。

【讨论】:

或者你可以在批处理文件中使用 findstar windowstechinfo.com/2015/05/…

以上是关于如何在 localhost Windows 上释放我的端口 80?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 localhost Windows 上释放我的端口 80?

如何在 localhost Windows 上释放我的端口 80?

如何从Error中释放localhost:listen EADDRINUSE

如何在我的 Windows 桌面上运行 localhost 的移动设备上运行我的 Angular 站点[重复]

如何启动 Windows 服务网络进程以侦听 UAC 下普通用户可见的 localhost 套接字上的端口?

使用 Windows 8.1 在 localhost 上测试 PHP 的 mail() 函数 [关闭]