Windows 7上的WAMP 403禁止消息


101

我在Windows 7计算机上安装了WAMP 2.1版。当我在浏览器中浏览到本地主机时,可以看到WAMP服务器页面。

但是当我在浏览器中浏览到我的IP时,我收到消息

403禁止访问:您无权访问此服务器上的/。

有什么建议?


到Apache服务器的访问是从其它地址禁止比127.0.0.1httpd.conf(Apache的配置文件)
纳斯尔丁

我更正了这个问题,现在我在phpMyAdmin中收到403 Forbidden,对此有何建议?
杰克

还有一个phpmyadmin.conf包含“ localhost / phpmyadmin”别名的指令
Nasreddine

如果您是Windows 8 chk用户,请访问此stackoverflow.com/questions/13945783/…–
破旧的

Answers:


126

除了(Apache的配置文件)中的地址以外127.0.0.1,禁止访问Apache服务器httpd.conf

<Directory "c:/wamp/www/">
    Options Indexes FollowSymLinks
    AllowOverride all
    Order Deny,Allow
    Deny from all
    Allow from 127.0.0.1
</Directory>

您对PHPMyAdmin的访问也一样,配置文件为phpmyadmin.conf

<Directory "c:/wamp/apps/phpmyadmin3.4.5/">
    Options Indexes FollowSymLinks MultiViews
    AllowOverride all
        Order Deny,Allow
        Deny from all
        Allow from 127.0.0.1
</Directory>

您可以将它们设置为允许来自所有IP地址的连接,如下所示:

AllowOverride All
Order allow,deny
Allow from all

7
这肯定会打开来自任何IP地址的访问权限,但这是否有点危险?允许“从127.0.0.1开始”的规则应足以允许本地访问,如果这是此处的主要目标,则127.0.0.1基本上是一个返回网络适配器的循环。如果您在地址栏中输入“ http”://127.0.0.1:{portNumber} / {folderOrFileName}”,则应该可以正常使用。这应该与使用localhost相同,但是我发现某些浏览器由于某种原因与localhost有关。
杰里米2012年

我无法在最后一条注释中设置地址行的格式,因此其中有一个额外的“'”,如果让任何人感到困惑,请忽略该抱歉。
杰里米

注意:该文件设置了默认值,然后每次都覆盖一个默认值,因此请确保这些行位于所有覆盖之后。
2012年

3
从WAMP系统托盘菜单不要忘了“重新启动所有服务”(或者无论你做到这一点。)
普卢默

12
对于Apache 2.4.x的版本替换Require localRequire all grantedhttpd.conf文件<Directory "c:/wamp/www/">标签然后重新启动所有服务
拉克什

62

我找到了一个更简单的修复方法...

尽管该图标为绿色,但WAMP仍需要“置于在线状态”(单击鼠标左键时菜单的最后一项)。

之后,我可以正常访问。


3
实际上,应将其标记为已接受的答案。谢谢老兄。
ummahusla 2015年

该解决方案值得赞扬,因为当您实际单击“放置在线”按钮时,配置已更新:forum.wampserver.com/read.php?1,119467,119546
Pierre-Yves Guillemet

这也为我解决了。尽管就我而言,我必须先“离线”,然后“在线”,并且无需对配置文件进行任何其他更改即可工作!谢谢!!
Osmar

1
实际上,我是在第一个被接受的答案中开始做所有这些事情的。它并没有帮助。然后我在这里看到了这个,我想“不可能是这个……”,但是,就是那样并且它起作用了。
Fusseldieb

超级能力强!
Vahid

25

对我而言,包含“ Require local”有助于解决错误403。别名配置文件如下所示:

Alias /mytest/ "C:/mytest/" 

<Directory "C:/mytest/">
    Options Indexes FollowSymLinks MultiViews
    AllowOverride all
        Order allow,deny
    Allow from all
    Require local
</Directory>

3
使用Apache 2.4.9对我也是如此。一直在寻找这个很长一段时间。谢谢!
乔纳森·利德贝克

Options Indexes FollowSymLinks MultiViews也需要
Hammad Khan 2015年

有什么理由添加“ C:/ mytest /”部分吗?它似乎没有任何作用,只是在最后保留一个/似乎还是一样有效
-Squazz

如果您想在本地网络的其他设备上打开站点,请更好地使用“要求所有被授予的权限”代替“需要本地的权限”
Rakesh

添加“允许所有人”对我来说是可行的。
雷克斯怪异

10

如果可以从外部提供对WAMP服务器的访问,则可以更改httpd.conf中的权限的解决方案。

如果您不想这样做,则只需告诉Windows“ localhost”域指向127.0.0.1。您可以通过编辑系统目录中的hosts文件来实现。

该文件位于:C:\ Windows \ System32 \ drivers \ etc \ hosts

默认情况下,Windows 7附带:

# localhost name resolution is handled within DNS itself.
#   127.0.0.1       localhost
#   ::1             localhost

您必须取消注释本地主机的映射:

# localhost name resolution is handled within DNS itself.
127.0.0.1       localhost
#   ::1         localhost

注意:您将无法将hosts文件作为只读文件进行编辑。要进行编辑,您必须是管理员,然后将文件复制到其他位置,进行编辑,然后再复制回etc目录。

我不建议更改主机文件。使用httpd.conf文件的权限。仅当您不希望从外部访问服务器时,才使用hosts文件方法。


8

尝试将以下代码行添加到文件httpd-vhosts.conf中:

<VirtualHost *:80>
ServerAdmin serveradmin@host.com
DocumentRoot "C:\wamp\www"
ServerName localhost
</VirtualHost>

7

我发现的另一件事是,如果您的网络适配器使用IPV6,它将不会显示为127.0.0.1,而是:: 1

我最终要做的是:

<Directory "c:/wamp/www/">
    Options Indexes FollowSymLinks
    AllowOverride all
    Order Deny,Allow
    Deny from all
    Allow from 127.0.0.1
    Allow from ::1
</Directory>

您对PHPMyAdmin的访问也是如此,配置文件为phpmyadmin.conf:

<Directory "c:/wamp/apps/phpmyadmin3.4.5/">
    Options Indexes FollowSymLinks MultiViews
    AllowOverride all
        Order Deny,Allow
        Deny from all
        Allow from 127.0.0.1
        Allow from ::1
</Directory>

我认为此答案确实解决了所要问的重要问题,即启用IPv6时,localhost解析为IPv6地址(:: 1),这又意味着请求的地址也将是IPv6地址(也:: 1)与127.0.0.1不同,后者是允许连接的唯一地址。另外,默认情况下,本地主机会通过本地DNS服务器(而不是主机)进行解析,按照我的看法,将其保留为原来的样子更好,而是禁用IPv6以使本地主机解析为127.0.0.1或如上所述进行更改/包含。
快速反应,

只需将“从:: 1允许”添加到“ c:\ wamp \ alias \ phpmyadmin.conf文件”即可解决phpmyadmin 403问题。
ewroman '16

4

如果您使用了localhost / phpmyadmin /

只需使用

127.0.0.1/phpmyadmin/用于PHPMyAdmin

127.0.0.1/sqlbuddy/对于SQLBuddy

或者如果您使用了localhost:8080 / phpmyadmin /

127.0.0.1:8080/phpmyadmin/ for PHPMyAdmin

127.0.0.1:8080/sqlbuddy/ for SQLBuddy


4

记住要删除其中的虚拟元素 httpd-vhosts.conf

<VirtualHost *:80>
    ServerAdmin webmaster@dummy-host.example.com
    DocumentRoot "c:/Apache24/docs/dummy-host.example.com"
    ServerName dummy-host.example.com
    ServerAlias www.dummy-host.example.com
    ErrorLog "logs/dummy-host.example.com-error.log"
    CustomLog "logs/dummy-host.example.com-access.log" common
</VirtualHost>

<VirtualHost *:80>
    ServerAdmin webmaster@dummy-host2.example.com
    DocumentRoot "c:/Apache24/docs/dummy-host2.example.com"
    ServerName dummy-host2.example.com
    ErrorLog "logs/dummy-host2.example.com-error.log"
    CustomLog "logs/dummy-host2.example.com-access.log" common
</VirtualHost>

谢谢!这样就解决了。
史蒂夫(Steve)

4

对于Apache版本 2.4.x的只需更换Require localRequire all grantedhttpd.conf文件里面的文件<Directory "c:/wamp/www/">标签然后重新启动所有服务


1
这帮了我大忙。奇怪的是,另外2个VirtualHost(位于httpd-vhosts.conf中)没有“需要本地”或“需要全部授予”,并且仍然可以正常工作。¯_(ツ)_ /
¯– kmdsax

3

对于Wamp 3.1.3和Apache 2.4,我只需要在httpd-vhosts.conf文件中更改1行。

  1. 打开httpd-vhosts.conf
  2. 将“需要本地”更改为“需要全部授予”
  3. 重新启动所有服务

这样便可以从其他计算机访问我的apache服务器。

感谢这部影片:https : //www.youtube.com/watch?v=Sy_f6wBGnjI


2

可能有许多原因导致此问题

我经历过的是:
1)127.0.0.1 localhost条目在主机文件中重复
2)mod_rewrite未启用Apache

不管是什么原因,备份你的www文件夹,虚拟主机配置文件(httpd的和配置文件)会有所帮助。这样的过程需要几分钟。

祝好运


2

我阅读并尝试了所有修复程序,但没有一个起作用。最后,我发现Wamp Server徽标是绿色的,但需要“在线放置”。如此简单和快速修复检查你的后PHPMyAdmin.CofgHttPD.cofg只需点击放到网上


1

我尝试了上面的配置,仅此配置适用于我的WAMP Apache 2.4.2配置。对于Windows主机文件中没有命名域的多个根站点,请使用http://locahost:8080, http://localhost:8081, http://localhost:8082和以下配置:

#ServerName localhost:80
ServerName localhost

Listen 8080
Listen 8081
Listen 8082
#..... 
<VirtualHost *:8080>
    DocumentRoot "c:\www"
    ServerName localhost
    <Directory "c:/www/">
        Options Indexes FollowSymLinks
        AllowOverride all
        Require local
    </Directory>
</VirtualHost>
<VirtualHost *:8081>
    DocumentRoot "C:\www\directory abc\svn_abc\trunk\httpdocs"
    ServerName localhost
    <Directory "C:\www\directory abc\svn_abc\trunk\httpdocs">
        Options Indexes FollowSymLinks
        AllowOverride all
        Require local
    </Directory>
</VirtualHost>
#<VirtualHost *:8082></VirtualHost>.......

1

我在Windows 7上使用wamp遇到了这个问题。将以下代码添加到httpd-vhosts.conf中为我解决了该问题。

<VirtualHost *:80>
  DocumentRoot "F:/wamp_server/www/"
  ServerName localhost
</VirtualHost>

1

感谢您的提问。我现在正在使用wamp 3。在您的问题下,我找到了一个简单的答案来执行此操作。但是这个答案在wamp 3上应该会有所改变。步骤如下:

  1. 右键单击沼泽图标
  2. 选择Wamp设置
  3. 点击菜单项:在线/离线
  4. 左击沼泽图标
  5. 您会发现有一个名为“在线放置”的新项目。

谢谢@miltonb。
Smart Du

1

我花了很长时间才弄清楚这一点。

C:\ wamp \ bin \ apache \ apache2.4.9 \ conf \ extra \ httpd-vhosts.conf

在此文件中,您会注意到几个示例虚拟主机文件,如下所示:

<VirtualHost *:80>
    ServerAdmin webmaster@dummy-host.example.com
    DocumentRoot "c:/Apache24/docs/dummy-host.example.com"
    ServerName dummy-host.example.com
    ServerAlias www.dummy-host.example.com
    ErrorLog "logs/dummy-host.example.com-error.log"
    CustomLog "logs/dummy-host.example.com-access.log" common
</VirtualHost>

<VirtualHost *:80>
    ServerAdmin webmaster@dummy-host2.example.com
    DocumentRoot "c:/Apache24/docs/dummy-host2.example.com"
    ServerName dummy-host2.example.com
    ErrorLog "logs/dummy-host2.example.com-error.log"
    CustomLog "logs/dummy-host2.example.com-access.log" common
</VirtualHost>

只需删除这些条目并替换为:

<VirtualHost *:80>
    ServerAdmin serveradmin@host.com
    DocumentRoot "C:\wamp\www"
    ServerName localhost
</VirtualHost>

您绝对需要确保其他鸭子都排成一行,但这对我来说是可行的解决方案。


0

嗨,有2个解决方案:

  1. 在文本文件(httpd.conf)中将端口80更改为81,然后单击127.0.0.1:81

  2. 更改设置网络进入控制面板-网络和互联网-网络和共享中心

单击->本地连接选择->属性在-allow other .....和--- allo other .....中检查true


0

我也有这个问题。我的问题的出路是我在vhosts.conf文件中犯了一个错误。如果您正在使用虚拟主机,这是另一件事要检查


0

httpd.conf中的此配置对我来说很好用。

<Directory "c:/wamp/www/">
    Options Indexes FollowSymLinks
    AllowOverride all
    Order Deny,Allow
    Deny from all
    Allow from 127.0.0.1 ::1
</Directory>

0

确保您在.conf文件的路径名中没有使用Windows的目录分隔符(反斜杠),即使您使用的是Windows。Apache不理解它们,但仍会启动然后输出一个403 Forbidden Message

错误:

<Directory "c:\websites\my-website\">

对:

<Directory "c:/websites/my-website/">

0

令人惊讶的是,DocumentRoot(以及相关的路径,如<Directory>)中的方括号也可能导致错误403:

  • DocumentRoot "P:/TRY/web/fatfree/from_github/fatfree-master[bang]" 以403失败,而
  • DocumentRoot "P:/TRY/web/fatfree/from_github/fatfree-master" 工作正常。

(我不必费心找出Apache路径的转义符(如果有的话),而是改名为路径。如果有人知道,欢迎发表评论。)


0

我的解决方案是禁用编码文件的编码(这些文件在Windows中为绿色)。我已经从MAC计算机上获得了这些文件,并且默认情况下已加密。

Ive select these files > right click > properities > general tab > andvanced > uncheck encrypt files...

瞧,它有效。


0

我已经尝试了所有的东西,除了清除.htaccess文件中的混乱。

转到www /目录,并在另一个文件夹中复制.htaccess文件。然后清除.htaccess原始文件中的所有行。并添加这一行,

RewriteEngine开

然后重新启动服务器。这解决了我的问题,并且可以访问我所有的localhost站点。希望它也能解决您的问题。


0

同样在Apache 2,4上,如果您决定包括httpd-vhosts.conf,则可能需要将此文件添加到conf中的目录指令中。

默认情况下,您可以在C:\中安装wamp,但仍然选择将Web开发部署在其他位置。

要在vhosts.conf中执行此操作,可以添加以下指令:

<Directory "e:/websites">
    Options Indexes FollowSymLinks MultiViews
    DirectoryIndex index.php
    AllowOverride All
  <IfDefine APACHE24>
    Require local
  </IfDefine>
  <IfDefine !APACHE24>
    Order Deny,Allow
    Allow from all
    Allow from localhost ::1 127.0.0.1
  </IfDefine>
</Directory>

0

确保目录中的文件c:/wamp/apps/phpmyadmin3.1.3.1/名与phpMyAdmin.conf(Alias /phpmyadmin "c:/wamp/apps/phpmyadmin3.1.3.1/")中的名称(或版本)匹配


0

我发现,如果您出于某种原因使用ammps,则在根文件夹中时始终禁止使用它,因此我将其放在根文件夹上方的目录中,并在httpd.conf 使用它时使用了别名

Alias /phpmyadmin "C:/Program Files (x86)/Ampps/phpMyAdmin"

请注意,我正在使用ammps,但我不确定是否可以为他人使用,但值得一试;)

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.