WAMP错误:禁止访问您没有权限访问此服务器上的/phpmyadmin/。

286
我对 WAMP 不熟悉,今天才刚安装好。安装进行得很顺利,本地主机似乎也能工作,但是当我尝试访问phpMyAdmin 时,出现以下错误提示:

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

为什么我使用 Windows 7 访问 phpMyAdmin 时会出现权限访问错误?

59
注意接受的答案,WAMP的phpmyadmin默认配置允许使用无密码的root用户登录。Allow from all会将数据库开放给公众。真正的问题是WAMP在您的Windows版本中绑定到一个IPv6地址。修复方法是在 c:\wamp\alias\phpmyadmin.conf<Directory "c:/wamp/apps/phpmyadmin3.4.5/"> 中添加 Allow from ::1 - oxygen
2
奇怪的是,这个问题基本上相同,在这里作为社区维基受到保护。 (https://dev59.com/Q2kv5IYBdhLWcg3wbgUx) - ruffin
35个回答

372

将文件c:\wamp\alias\phpmyadmin.conf的内容更改为以下内容。

注意:出于安全考虑,您应该将Allow指示设置为从您的本地机器允许。指令Allow from all是不安全的,应该限制在您的本地机器上使用。

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

这里我的WAMP安装在c:\wamp文件夹中。根据您的安装情况进行更改。

以前是这样的:

<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>

现代版本的Apache 2.2及以上将寻找IPv6环回而不是IPv4环回(您的本地主机)。

真正的问题是wamp绑定到了一个IPv6地址。解决方法: 只需添加Allow from ::1 - Tiberiu-Ionuț Stan

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

这将只允许本地机器访问Apache的本地应用程序。

更改后请重新启动您的Apache服务器。


1
之前的设置是: Deny from all Allow from 127.0.0.1修改后请务必重启 Apache 服务器服务。 - Akhil Thayyil
2
取决于您的Apache版本。如果Apache版本大于2.4.x,则需要不同的配置。请参见我下面的答案。 - Kyle Cureau
3
WAMP的phpmyadmin配置允许使用没有密码的root账户。Allow from all将会使数据库对公众开放。 - oxygen
34
问题在于WAMP绑定了一个IPv6地址。解决方法是:只需添加Allow from ::1即可。 - oxygen
@Tiberiu-IonuțStan +1!Allow from ::1 对我有用,这就是 Allow from all 所做的,所以我在实践良好安全性的情况下将其删除 :) - sabgenton
显示剩余9条评论

140

您只需检查您的 WAMP 服务器是否在线。

要将您的WAMP服务器上线,请按照以下步骤操作:

  1. 转到WAMP服务器通知图标(位于任务栏中)。
  2. 单击WAMP服务器图标。
  3. 从菜单中选择最后一个选项,即上线
  4. 您的服务器将自动重启(仅适用于最新版本)。否则,您必须手动重新启动服务器。

然后您就完成了...


4
仅使用“最新版本”很快就会过时。由于您在IT领域工作,请提及版本号。此外,这对我根本没有起作用。请始终在线运行并以管理员身份运行它。更糟糕的是,某些域使用虚拟主机工作,但无法访问localhost或127.0.0.1,或者使用*/phpmyadmin,这非常奇怪。顺便说一下,这是在Win8上的情况。可能与安装了Visual Studio 2012 Ultimate 64位版有关(其中包括IIS 8,将进行更新)。 - rkeet
1
我的天啊,我感觉好蠢。我花了很长时间来搞清楚“Require all granted”等问题。谢谢你。 - John McCollum
现在“上线”选项不可用。要启用它,请右键单击 Wamp 图标 > Wamp 设置 > 选中菜单项目:“在线/离线”,现在当您左键单击该图标时,“上线”选项将​​可用。 - Oush

126

如果您正在使用Apache 2.4.2或更高版本的WAMP,则需要使用Require all而不是Allow,并删除Order Deny,Allow

<Directory "f:/Projects/myproject/www/">
    Options Indexes FollowSymLinks MultiViews
    AllowOverride all
    Require all granted
</Directory>

*正如这篇博客文章中所述


1
禁止访问您没有权限访问此服务器上的 /phpmyadmin/。 - Hassan Z
你的答案应该是最好的答案!非常有效 :) - Tohid
这对我有用。WAMP Server 2.2; Apache 2.4.2; Windows 8。 - Michael J
@JensTörnell 恭喜。你刚刚允许无限制地访问 Apache 安装的任何驱动器的根目录。我希望你不会实际上从互联网上允许系统访问。 - RiggsFolly
这对我在apache2.4.18上起作用了。你让我的夜晚变得美好,谢谢! - Matthew
显示剩余2条评论

42

只需使用127.0.0.1代替localhost(无需更改配置文件)。

系统:

  • Windows 7
  • wampserver2.2d-x64

这样做是有效的:

http://127.0.0.1/phpmyadmin/

这个不起作用:

http://localhost/phpmyadmin/

3
之所以会这样,是因为 localhost 被解析成了一个 IPv6 地址,而 wamp 的默认配置只允许使用 IPv4 的回环地址。 - Sherbrow

36

我遇到了同样的问题。原来我的Windows安装中正在使用IPv6地址::1,而不是127.0.0.1。为了解决这个问题,我打开了httpd.conf并更改了以下行:

Allow from 127.0.0.1

目标:

Allow from 127.0.0.1 ::1

现在我可以通过localhost访问服务器。无论你做什么,都不要删除上面一行的Deny from all from,否则你网络中的任何人都可以访问你的Web服务器(除非这正是你想要的)。


顺便提一下,我还需要对所有别名进行更改。要编辑别名,请转到:"[wamp图标]->Apache->别名目录->[别名网址]->编辑别名" - Micke
我在我的cmd终端上执行了ping localhost,并得到了Reply from ::1: time<1ms。看起来我的Win7机器正在使用IPv6地址解析localhost。你的解决方案解决了这个问题。我同意,这可能应该是被接受的答案。 - Chris
太棒了!!!我在我的Mac(MAMP)上遇到了同样的问题,现在它可以工作了!你救了我的一天,伙计!:D - drpelz
httpd.conf 对我不起作用,但是当我在 phpmyadmin.conf 中做同样的事情时它有效! - Adil
1
我认为这个答案应该被编辑,因为正确的要编辑的文件是 wamp/alias/phpmyadmin.conf,而不是 httpd.conf - bg17aw

21
如果您使用的是Windows 7或8,则Apache可能会将连接视为来自“::1”,这是127.0.0.1的IPv6等效地址。您可以通过查看Apache访问日志(可从WAMP菜单中访问)来进行检查。
::1 - - [20/Dec/2012:21:35:04 +0000] "GET /phpmyadmin/ HTTP/1.1" 403 213

在开头的::1是客户端地址。结尾的403是拒绝访问的代码。

上面的答案将消除所有限制并向所有人打开phpmyadmin,但如果您仍然希望仅将phpmyadmin限制为您自己的机器(通常是个好主意),则需要在以下行下方...

Allow from 127.0.0.1

..添加以下内容:

Allow from ::1

(编辑:添加了Nukeface的建议)


1
谢谢。这应该是顶级评论。您解释了问题,解决了它,并没有向某人的服务器引入大规模安全漏洞。 - obesechicken13
1
我已经得到了解决方案,作为一个单独的和额外的行。我使用 "Allow from 127.0.0.1 下一行 Allow from ::1"。以防它切换回IPv4(因为我禁用了IPv6)。 - rkeet

10

更改

Listen 80 
Listen 127.0.0.1:80 

在您的httpd.conf文件中,它将绑定Apache到特定的IP地址和端口。


8
我发现使用localhost无法正确地允许从服务器进行本地访问。我必须使用127.0.0.1。
在phpmyadmin.conf中,这样不起作用:
Deny from all
Allow from localhost

这个做法起效了:

Deny from all
Allow from 127.0.0.1

我正在使用WampServer 2.2版本


1
这可能是因为您没有正确配置HOSTS文件,正确设置后,您将能够使用localhost。 - RiggsFolly

8
对于Apache 2.4.2版本: 在httpd.conf中: 更改:
Require local

to

Require all granted

7

我希望将我的服务器放到网上运行,而不是在本地主机/127.0.0.1上运行,但却收到了“禁止访问”的消息。我在Windows 7 64位系统上运行WAMP 2.2服务器 (Apache 2.4.2 / PHP 5.4.3 / MySQL 5.5.24)。以下是解决方法:

  1. 点击菜单中的WAMP图标启动
  2. 选择Apache文件夹
  3. 选择文件httpd.conf
  4. 在Directory选项卡(包含“# Online --> Require all granted”文本的部分)下,我有一个“Require local”的选项,我将其更改为“Require all granted”
  5. 重新启动WAMP的所有服务

以上方法适用于我的情况。从这个主题中我了解到,可能会出现很多导致以上错误信息的情况,如果我的方法不能解决问题,请尝试其他解决方案。

祝你好运。

(我希望这能帮助像我一样遇到类似问题的人。我没有找到以上任何一种解决方案适用于我。)


先生,你解决了一个让我整个周末都在尝试解决的问题。谢谢! - Hawk

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