【问题标题】:Xampp: I can't access phpMyAdmin from localhostXampp:我无法从 localhost 访问 phpMyAdmin
【发布时间】:2012-10-10 08:57:45
【问题描述】:

我试图设置 Xampp 用于家庭开发。它已正确安装,我可以访问 xampp 页面,例如演示、安全性、状态...甚至使用 phytin-gui 来启动和停止服务器。

但是当谈到使用 'http://localhost/phpmyadmin' 访问 phpMyAdmin 时,我得到了下一个错误:

Access forbidden!

New XAMPP security concept:

Access to the requested directory is only available from the local network.

This setting can be configured in the file "httpd-xampp.conf".

我检查了我的 httpd-xampp.conf 并且似乎是正确的。我尝试将拒绝全部更改为允许全部但不工作。

我的主机文件将 localhost 指向 127.0.0.1,这是访问所有 xampp 文件的预期目标。

我在 ubuntu 12.04 机器上运行 XAMPP 1.8.1

有同样问题的人吗?我失去了将近 2 个小时的谷歌搜索,但我发现的只是当尝试从其他网络或机器访问服务器时发生此错误。但对我来说,情况是我直接在服务器上工作,所以它假设我可以默认访问 phpMyAdmin。

我的 httpd-xampp.conf

#
# New XAMPP security concept
#
<LocationMatch "^/(?i:(?:xampp|security|licenses|phpmyadmin|webalizer|server-status|server-info))">
    Order deny,allow
    Deny from all
    Allow from ::1 127.0.0.0/8 \
        fc00::/7 10.0.0.0/8 172.16.0.0/12 192.168.0.0/16 \
        fe80::/10 169.254.0.0/16

    ErrorDocument 403 /error/XAMPP_FORBIDDEN.html.var
</LocationMatch>

【问题讨论】:

标签: ubuntu phpmyadmin xampp localhost


【解决方案1】:

如果你在/opt下安装了XAMPP,进入/opt/lampp/etc/extra目录,编辑httpd-xampp.conf添加Require all granted如下图:

# since XAMPP 1.4.3
<Directory "/opt/lampp/phpmyadmin">
    AllowOverride AuthConfig Limit
    Order allow,deny
    Allow from all
    Require all granted
</Directory>

您可能需要通过运行 /opt/lampp/lampp restart 重新启动 LAMPP 服务器。

【讨论】:

  • 这不只是一个禁用 phpmyadmin 路径的 all 安全性的黑客行为吗?错误的真正原因是什么?参考:Require DirectiveRequire all granted Access is allowed unconditionally.
  • 您指出上述解决方案授予无条件访问权限是正确的。 原因:127.0.0.1 只能访问安全文件夹,拒绝局域网访问。 要解决问题并在一定程度上维护安全性,您可以尝试以下代码
    Allow from xxx.xxx.x.xxx xxx.xxx.x.xxx 如果您想在“允许来自”规则中添加超过 1 个 IP 地址,只需添加它们在最后一行之后有空格,或者以反斜杠“\”结束一行,你可以直接写在下一行。
【解决方案2】:

我也在 XAMPP 自己的论坛中发现了这个问题。提到了Require all granted 答案,但这无条件地授予访问权限。该线程继续提供a better solution

只需更新您的 httpd-xampp.conf。 将结尾替换为:

#
# New XAMPP security concept
#
<LocationMatch "^/(?i:(?:xampp|security|licenses|phpmyadmin|webalizer|server-status|server-info))">
    <RequireAny>
        Require ip ::1 127.0.0.0/8 \
        fc00::/7 10.0.0.0/8 172.16.0.0/12 192.168.0.0/16 \
        fe80::/10 169.254.0.0/16
    </RequireAny>
    ErrorDocument 403 /error/XAMPP_FORBIDDEN.html.var
</LocationMatch>

然后重新启动您的lampp: sudo /opt/lampp/lampp 重启

参考:http://httpd.apache.org/docs/2.4/mod/mod_authz_core.html#require

【讨论】:

    【解决方案3】:

    我通过为phpmyadmin 创建一个新的虚拟主机解决了这个问题

    将以下内容附加到C:/xampp/apache/conf/httpd.conf

    NameVirtualHost phpmyadmin.local
    
    <VirtualHost phpmyadmin.local>
      ServerName phpmyadmin.local
      DocumentRoot "C:/xampp/htdocs/phpmyadmin"
      <Directory "C:/xampp/htdocs/phpmyadmin">
        AllowOverride All
        Allow from All
      </Directory>
    </VirtualHost>
    

    DocumentRoot/Directory 更改为您安装phpmyadmin 版本的路径。

    在文本编辑器中打开C:\Windows\System32\drivers\etc\hosts 文件并添加以下行:

    127.0.0.1     phpmyadmin.local
    

    然后保存主机文件并重新启动xampp

    https://stackoverflow.com/a/16617319/2395363

    【讨论】:

      【解决方案4】:

      此答案适用于 XAMPP 1.8.2[PHP: 5.4.25]

      只需在下面的Require local前面加上#号,重要的是,在xampp控制面板中停止和启动Apache。就是这样,它肯定可以工作

      <LocationMatch "^/(?i:(?:xampp|security|licenses|phpmyadmin|webalizer|server-status|server-info))">
             #Require local
      
          ErrorDocument 403 /error/XAMPP_FORBIDDEN.html.var
      </LocationMatch>
      

      【讨论】:

        猜你喜欢
        • 2016-01-22
        • 2017-03-02
        • 1970-01-01
        • 2017-09-06
        • 2015-11-10
        • 2018-01-17
        • 2014-10-03
        • 2018-06-02
        相关资源
        最近更新 更多