在Windows 7上,http://localhost/无法工作。问题出在哪里?

24

我在Windows 7 (beta)上打开 http://localhost/ 遇到了一个大问题。 我安装了这个操作系统,一切都很顺利;当我安装 Wamp 后发现 localhost 根本无法工作。 我只看到以下错误:

连接失败

Firefox 无法与 localhost 上的服务器建立连接。

在 Mozilla 和 Explorer 中也是如此。

我删除了 Wamp,并在几周后(即从今天算起两周)在 Windows 7 上安装了 NetBeans。 我创建了一个测试 PHP 脚本,但在调试时,我再次遇到了同样的错误。 我尝试使用 IP 127.0.0.1 访问它,但还是一样的。 问题出在哪里?
我安装 NetBeans 时将其安装在端口 8080 上。


从你的评论中可以看出,你显然没有遇到404错误。你应该修复你的问题,以反映你实际遇到的错误。 - Adam Jaskiewicz
为什么每个人的答案都被投票否决了? - Oguz Bilgic
类似的问题在这里:https://dev59.com/sXRC5IYBdhLWcg3wFdJx - Mukesh Chapagain
22个回答

22

21

解决端口80的问题方法如下:

管理员身份运行cmd:

  1. sc config http start= demand(等号后面需要空格而不是前面)
  2. 重新启动
  3. 以管理员身份运行命令(netsh http show servicestate)检查端口80是否在使用中

执行此命令后,您可以按以下方式禁用http.sys:

  1. net stop http (停止进程)
  2. Sc config http start= disabled (如果您想永久禁用服务)

这对我有效。


1
在我的情况下,MS Deploy 正在使用端口 80。我能够使用您提到的 netsh http show servicestate 命令找到它。然后我也像您提到的那样禁用了其他服务。现在它已经开始工作了。感谢您的分享。 - Krunal
Fabio和Nick,你们是BACON的救星!谢谢你们。 - gadildafissh
当我运行 sc config http start= demand 时,它显示访问被拒绝? - ii iml0sto1

12

编辑你的C:\Windows\System32\drivers\etc\hosts文件

确保有一个条目看起来像这样:

127.0.0.1   localhost

如果有像这样的一条记录

::  localhost

将其注释掉,使其看起来像这样

\#:: localhost

这应该可以解决你的问题,我以前也遇到过这个问题。


这是文件的一部分内容:

localhost名称解析在DNS本身中处理。

127.0.0.1 localhost

::1 localhost

我尝试更改它们,但当我保存它们时,我不知道要用什么扩展名保存该文件?
- AXheladini
1
对于我的安装,默认情况下127.0.0.1 localhost被注释掉了,只需将其激活即可。注意:在Win 7上保存需要管理员权限,如果您通过资源管理器导航,则除非您开启了管理员权限,否则您甚至看不到etc文件夹。 - James John McGuire 'Jahmic'
+1,这个方法对我也有效。真不敢相信Windows 7默认会注释掉这个功能....如果你在编辑或保存文件时遇到问题,可能需要右键单击文本编辑器图标/可执行文件并选择“以管理员身份运行”,才能修改系统文件。 - Amos M. Carpenter

6

对我来说,问题是由于Skype引起的。一旦我停止了Skype,一切都正常了。我在Windows 7 x64上运行1.7.1版本的xampp(mysql和apache)。


2
你可以在Skype的选项中指定是否允许使用端口80和443。 - Martin C.
马丁!你太棒了!我现在就要深入研究Skype的设置! - Nosredna

6

听起来好像您没有任何网络服务器在任何地方运行。

您是否尝试启用IIS并使用它显示基本的HTML文件?

程序和功能 -> 打开或关闭Windows功能 -> Internet信息服务

然后,将您的HTML文件放置在C:\inetpub\wwwroot\index.html中,并浏览http://localhost

一旦这个工作了,尝试让WAMP/php工作。小心端口冲突。


3
我的初步想法是您的hosts文件缺少一项,例如“127.0.0.1 localhost”,但是您提到了404错误。这意味着Web服务器正在连接到您的客户端/浏览器,并响应特定网页的请求。
我对Windows 7不太熟悉,但我相当确定它默认不包括Web服务器。此外,除非您实际编码、构建和运行使用Netbeans的Web服务器应用程序,否则您将无法获得所需的响应。
归根结底...您的问题将是以下三种情况之一:
1)您正在提供静态文档,但Web服务器未配置为从正确的DOCROOT中提供文件。这包括用户目录中的PUBLIC文件夹。(基本的Apache安装包括基本主页)
2)您有一个动态Web服务器应用程序,其中控制器查看应用程序路径以决定显示哪个页面或执行哪个函数(请参见MVC-Controller)。基本上是不完整的实现。
3)另一个配置错误:您的网站可能实际上定义了虚拟域。 (除localhost之外的某些内容),因此在URL中寻找localhost时,服务器可能未配置为提供默认页面。

现在我看到错误是这样的: 连接失败Firefox 无法与 localhost 上的服务器建立连接。 - AXheladini
如果连接未能建立,则问题可能是Web服务器未运行、运行在不同的端口(参见其他注释)或防火墙阻止访问。 - Richard
NetBeans安装了哪种Web服务器? - AXheladini
当前的NetBeans支持Glassfish应用服务器和Tomcat Servlet容器。 - Richard

2

取消主机文件中以下行的注释对我有帮助:

#127.0.0.1 localhost

1

我遇到了404无法连接错误,然后我将wampmanager.exe设置为以XP Sp3模式运行,现在看起来运行得很正常,可以通过以下方式完成:


  1. 右击它
  2. 属性
  3. 点击标签“兼容性”
  4. 在“兼容模式”下勾选框
  5. 选择 Windows XP(Service Pack 3)
  6. 点击应用然后确定


1

最终对我来说,在端口80上,这个方法解决了问题:

  • 您必须通过注册表手动禁用http.sys服务:

    1. 启动RegEdit
    2. 转到:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\HTTP
    3. 添加一个新的DWORD(32位)值
    4. 命名为“ NoRun”(不包括引号)
    5. 双击新属性
    6. 在“值数据”字段中键入“ 1”(不包括引号),然后单击“确定”
    7. 重新启动计算机

现在您应该发现Apache将在端口80上启动!


1

是的,这也让我很烦恼。

所以我找到了“启动Wampserver”,只需点击启动按钮并输入即可。

然后右键单击它,选择属性。在兼容性选项卡上将其设置为运行在XP服务包3中。 我还勾选了“以管理员身份运行此程序”的框。

然后我右键单击系统托盘上的WAMPSERVER,重新启动了所有服务。 对我来说,这很完美,希望这也能帮助到您。

罗布


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接