如何在 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 -> 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 站点[重复]