【问题标题】:New xampp security concept: Access Forbidden Error 403 - Windows 7 - phpMyAdmin新的 xampp 安全概念:访问禁止错误 403 - Windows 7 - phpMyAdmin
【发布时间】:2014-02-05 08:48:59
【问题描述】:

我已在 Windows 7 Ultimate 上下载并安装了适用于 Windows 的 XAMPP 1.8.1。我已经按照这些 instructions 设置了 XAMPP 与 IIS 一起运行

到目前为止一切顺利,我的 PHP 站点在本地运行,除了 phpMyAdmin 之外的所有内容都可以从 XAMPP 菜单中获得。

但是,当我尝试访问 phpMyAdmin 时出现此错误:

禁止访问!

新的 XAMPP 安全概念:

只能从本地访问请求的目录 网络。

这个设置可以在“httpd-xampp.conf”文件中配置。

我通过 Google 和本网站找到了一些答案。但是,到目前为止,我尝试过的解决方案都没有解决这个问题。

这是我的 httpd-xampp.conf 文件:

#
# XAMPP settings
#

<IfModule env_module>
    SetEnv MIBDIRS "C:/xampp/php/extras/mibs"
    SetEnv MYSQL_HOME "\\xampp\\mysql\\bin"
    SetEnv OPENSSL_CONF "C:/xampp/apache/bin/openssl.cnf"
    SetEnv PHP_PEAR_SYSCONF_DIR "\\xampp\\php"
    SetEnv PHPRC "\\xampp\\php"
    SetEnv TMP "\\xampp\\tmp"
</IfModule>

#
# PHP-Module setup
#
LoadFile "C:/xampp/php/php5ts.dll"
LoadModule php5_module "C:/xampp/php/php5apache2_4.dll"

<FilesMatch "\.php$">
    SetHandler application/x-httpd-php
</FilesMatch>
<FilesMatch "\.phps$">
    SetHandler application/x-httpd-php-source
</FilesMatch>

#
# PHP-CGI setup
#
#<FilesMatch "\.php$">
#    SetHandler application/x-httpd-php-cgi
#</FilesMatch>
#<IfModule actions_module>
#    Action application/x-httpd-php-cgi "/php-cgi/php-cgi.exe"
#</IfModule>


<IfModule php5_module>
    PHPINIDir "C:/xampp/php"
</IfModule>

<IfModule mime_module>
    AddType text/html .php .phps
</IfModule>

ScriptAlias /php-cgi/ "C:/xampp/php/"
<Directory "C:/xampp/php">
    AllowOverride None
    Options None
    Require all denied
    <Files "php-cgi.exe">
          Require all granted
    </Files>
</Directory>

<Directory "C:/xampp/cgi-bin">
    <FilesMatch "\.php$">
        SetHandler cgi-script
    </FilesMatch>
    <FilesMatch "\.phps$">
        SetHandler None
    </FilesMatch>
</Directory>

<Directory "C:/xampp/htdocs/xampp">
    <IfModule php5_module>
        <Files "status.php">
            php_admin_flag safe_mode off
        </Files>
    </IfModule>
    AllowOverride AuthConfig
</Directory>

<IfModule alias_module>
    Alias /security "C:/xampp/security/htdocs/"
    <Directory "C:/xampp/security/htdocs">
        <IfModule php5_module>
            <Files "xamppsecurity.php">
                php_admin_flag safe_mode off
            </Files>
        </IfModule>
        AllowOverride AuthConfig
        Require all granted
   </Directory>

    Alias /licenses "C:/xampp/licenses/"
    <Directory "C:/xampp/licenses">
        Options +Indexes
        <IfModule autoindex_color_module>
            DirectoryIndexTextColor  "#000000"
            DirectoryIndexBGColor "#f8e8a0"
            DirectoryIndexLinkColor "#bb3902"
            DirectoryIndexVLinkColor "#bb3902"
            DirectoryIndexALinkColor "#bb3902"
        </IfModule>
        Require all granted
   </Directory>

    Alias /phpmyadmin "C:/xampp/phpMyAdmin/"
    <Directory "C:/xampp/phpMyAdmin">
        AllowOverride AuthConfig Limit
        Order allow,deny
        Allow from all
        Require all granted
    </Directory>

    Alias /webalizer "C:/xampp/webalizer/"
    <Directory "C:/xampp/webalizer">
        <IfModule php5_module>
            <Files "webalizer.php">
                php_admin_flag safe_mode off
            </Files>
        </IfModule>
        AllowOverride AuthConfig
        Require all granted
    </Directory>
</IfModule>

#
# New XAMPP security concept
#
<LocationMatch "^/(?i:(?:xampp|security|licenses|phpmyadmin|webalizer|server-status|server-info))">
    Order deny,allow
    Allow from all
    Require all granted

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

有人知道我缺少什么吗?

【问题讨论】:

  • 如果这对某人有帮助:在尝试以下答案中的任何好的建议之前,请仔细检查您的目录中是否有一个索引文件指向...

标签: windows phpmyadmin xampp


【解决方案1】:

你所要做的就是编辑 httpd-xampp.conf

Require localRequire all grant 在 LocationMatch 标记中。

就是这样!

【讨论】:

  • 这对我有用(在封闭系统上) - 不知道对其他人有什么安全影响:-/
  • 您可能还需要注释掉:Deny from all 并在 LocationMatch 标签下添加:Allow from all
  • 这对我不起作用。我进行了更改,现在我可以访问 phpmyadmin 但不能访问 webalizer。
  • 找不到这样的标签,LocationMatch 标签
  • 这不适用于当前的XAMPP,相反,当您添加虚拟主机时,只需添加Require all grant,下面是我的一个示例,您不需要全部httpd-ssl。 conf DocumentRoot "full-path" ServerName ie.test1 ServerAlias ie.test1 ServerAdmin a@d.com SSLEngine On SSLCertificateFile "full-path.cert" SSLCertificateKeyFile "full-path.key" ErrorLog "full-path /error.log" TransferLog "full-path/access.log" 选项 全部 要求全部授予
【解决方案2】:

在新 Xampp 中

您所要做的就是编辑文件:

C:\xampp\apache\conf\extra\httpd-xampp.conf

然后转到目录标签如下:

然后改变

需要本地

要求全部授予

在目录标签中。

重新启动 Xampp。就是这样!

【讨论】:

  • 感谢@TheMohanAhuja 它有效。如果您想在本地网络中允许特定的 IP 地址 PC,任何人都可以在同一 \httpd-xampp.conf 文件中的“需要本地”下方添加“需要 ip X.X.X.X”行。
  • 这对我有帮助。仅在更改后在控制面板中停止/启动 Apache。
  • 您好,我遇到了同样的问题,我将更改为要求所有已授予但错误,因为它是访问被禁止的,有任何更改吗?请需要灵魂
  • @Seema 你重启xampp了吗?
  • @TheMohanAhuja 是的,先生,我已经重新启动了 xampp,但它不起作用
【解决方案3】:

对我来说,要求所有授予似乎有点遥远。查看我使用的文档:Require ip 192.168 以允许所有内部访问。

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

【讨论】:

    【解决方案4】:

    XAMPP 7.3.*更新

    如果您在最新的 XAMPP 中遇到与 phpmyadmin 相同的问题,就像我遇到的那样。

    解决方案写在位于[XAMPP IP]/dashboard/docs/access-phpmyadmin-remotely.html的官方文档中

    要启用从其他主机对 phpMyAdmin 的远程访问,请执行以下步骤:

    1. 双击已装载磁盘映像中的 XAMPP 图标启动堆栈管理器。
    1. 确保 Apache 和 MySQL 服务正在堆栈管理器的“服务”选项卡中运行(或根据需要启动它们)。
    1. 从堆栈管理器的“常规”选项卡打开一个新终端。
    1. 编辑 /opt/lampp/etc/extra/httpd-xampp.conf 文件。
    1. 在这个文件中,找到块&lt;Directory "/opt/lampp/phpmyadmin"&gt;

    更新此块并将Require local替换为Require all granted

    1. 保存文件并使用堆栈管理器重新启动 Apache 服务。

    第 (4) 部分的注释 要编辑此文件,请确保您已安装 vim

    第 (5) 节的注意事项 如果您的计算机已连接到网络,则不要允许访问所有人,这是非常不安全的。一种更安全的方法是按照@Gunnar Bernstein 的建议限制对一组 IP 的访问。

    就我而言,我做到了:

    <Directory "/opt/lampp/phpmyadmin">
      AllowOverride AuthConfig Limit
      Require local
      Require ip 192.168
      ErrorDocument 403 /error/XAMPP_FORBIDDEN.html.var
    </Directory>
    

    【讨论】:

    • 这就像一个魅力!在此解决方案之前浪费了几个小时:D 谢谢
    【解决方案5】:
        <LocationMatch "^/(?i:(?:xampp|security|licenses|phpmyadmin|webalizer|server-status|server-info))">
    
            Require all granted
        ErrorDocument 403 /error/XAMPP_FORBIDDEN.html.var
    </LocationMatch>
    

    祝你好运!!!!

    【讨论】:

      【解决方案6】:

      尝试重新安装新版本的 XAMPP。找到“&lt;Directory "C:/xampp/php"&gt;”然后改成这样的

      <Directory "C:/xampp/php">
          AllowOverride AuthConfig Limit
          Order allow,deny
          Allow from all
          Require all granted
      </Directory>
      

      【讨论】:

        【解决方案7】:

        您必须编辑 2 个文件 - 1. httpd-vhosts.conf 和 2. httpd-xampp.conf

        注意:确保备份文件 (httpd-xampp.conf) 和 ( httpd-vhosts.conf ) , 两个文件都位于 驱动器:\xampp\apache\conf\extra

        打开 httpd-vhosts.conf 文件并在文件底部更改它

        <VirtualHost *:80>
        DocumentRoot “E:/xampp/htdocs/”
        ServerName localhost
        <Directory E:/xampp/htdocs/>.
        Require all granted 
        </Directory>
        </VirtualHost>
        

        这里 E:/xampp 是我的项目工作区,你可以根据你的设置更改它

        第二次更改位于 httpd-xampp.conf 文件中,并在文件底部进行更改

        #
        # New XAMPP security concept
        #
        <LocationMatch “^/(?i:(?:xampp|security|licenses|phpmyadmin|webalizer|server-status|server-info))”>
        Order deny,allow
        Allow from all
        Allow from ::1 127.0.0.0/8
        ErrorDocument 403 /error/XAMPP_FORBIDDEN.html.var
        </LocationMatch>
        

        【讨论】:

          【解决方案8】:

          要访问本地网络以外的请求目录,您需要更改XAMPP security concept 在“httpd-xampp.conf”文件中配置。

          • 文件位置xampp\apache\conf\extra\httpd-xampp.conf

          Require Directive 选择哪些经过身份验证的用户可以访问资源

          语法 «Require entity-name [entity-name] ...

          来自 « XAMPP 安全概念只允许本地环境 - 需要本地

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

          到 « XAMPP 安全概念允许任何环境 - 要求所有授权

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

          禁止访问!来自 HTML 页面的消息。


          Allow Directive 控制哪些主机可以访问服务器的某个区域

          语法 «Allow from all|host|env=[!]env-variable [host|env=[!]env-variable] ...

          只允许本地环境。使用以下任何指定的 url。

          • http://localhost/phpmyadmin/
          • http://127.0.0.1/phpmyadmin/

            <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 \
            
                ErrorDocument 403 /error/XAMPP_FORBIDDEN.html.var
            </LocationMatch>
            

          只允许指定的IPv4IPv6 地址空间。

          • IPv4 的链路本地地址在地址块 169.254.0.0/16 中以 CIDR 表示法定义。在 IPv6 中,它们被分配地址块fe80::/10
          • 唯一本地地址 (ULA) 是 fc00::/7 块中的 IPv6 地址

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

          允许任何network address所有人都允许

          <LocationMatch "^/(?i:(?:xampp|security|licenses|phpmyadmin|webalizer|server-status|server-info))">
              Order deny,allow
              Allow from all
          
              ErrorDocument 403 /error/XAMPP_FORBIDDEN.html.var
          </LocationMatch>
          

          404 - XAMPP 控制面板:无法启动 Apache HTTP 服务器

          URL: http://localhost/xampp/index.php
          
          Error « 
              Not Found
              HTTP Error 404. The requested resource is not found.
          

          必需的默认 Apache HTTP 服务器端口 80 实际被其他服务使用。

          • 您需要找到运行在80端口的服务并停止该服务,然后启动Apache HTTP服务器。

            使用Netstat 显示活动的 TCP 连接,即计算机正在侦听的端口。

             C:\Users\yashwanth.m>netstat -ano
            
              Active Connections
            
              Proto  Local Address          Foreign Address        State           PID
              TCP    0.0.0.0:80             0.0.0.0:0              LISTENING       2920
              TCP    0.0.0.0:135            0.0.0.0:0              LISTENING       1124
            
              TCP    127.0.0.1:5354         0.0.0.0:0              LISTENING       3340
            
              TCP    [::]:80                [::]:0                 LISTENING       2920
            
            C:\Users\yashwanth.m>netstat -ano |findstr 2920
              TCP    0.0.0.0:80             0.0.0.0:0              LISTENING       2920
              TCP    0.0.0.0:443            0.0.0.0:0              LISTENING       2920
              TCP    [::]:80                [::]:0                 LISTENING       2920
              TCP    [::]:443               [::]:0                 LISTENING       2920
            
            C:\Users\yashwanth.m>taskkill /pid 2920 /F
              SUCCESS: The process with PID 2920 has been terminated.
            
          • 从主 Apache HTTP 服务器配置文件 D:\xampp\apache\conf\httpd.conf 更改侦听端口。 例如:81。从Listen 80Listen 81,访问URL 将是http://localhost:81/xampp/index.php

            # Change this to Listen on specific IP addresses as shown below to 
            # prevent Apache from glomming onto all bound IP addresses.
            #
            #Listen 0.0.0.0:80
            #Listen [::]:80
            Listen 80
            

          更多关于httpd and virtual host on XAMPP的信息

          【讨论】:

          • 你统治 Yash :)
          【解决方案9】:

          注释掉 httpd-xampp.conf 中的 Require local 行。
          重新启动 Apache。
          为我工作,将我的手机连接到我电脑上的测试网站。 不知道安全隐患。

          【讨论】:

            【解决方案10】:

            只需删除:

            Alias /phpmyadmin "C:/xampp2/phpMyAdmin/"
            <Directory "C:/xampp2/phpMyAdmin">
                AllowOverride AuthConfig
                Require all granted
            </Directory>
            

            并从以下位置删除 phpmyadmin:

            <LocationMatch "^/(?i:(?:xampp|security|licenses|phpmyadmin|server-status|server-info))">
            

            【讨论】:

              【解决方案11】:

              有些答案是正确的,但如果使用新的 xampp 或使用其他答案无效,请尝试以下操作:

              只需转到 xampp 文件夹:

              xampp/apache/conf/extra/httpd-xampp.conf

              如果您尝试从网络中的本地 ip 访问,请更改,

               Alias /phpmyadmin "C:/xampp/phpMyAdmin/"
                  <Directory "C:/xampp/phpMyAdmin">
                      AllowOverride AuthConfig
                      Require local
                      ErrorDocument 403 /error/XAMPP_FORBIDDEN.html.var
                  </Directory>
              

              改为:

               Alias /phpmyadmin "C:/xampp/phpMyAdmin/"
                  <Directory "C:/xampp/phpMyAdmin">
                      AllowOverride AuthConfig
                      Require all granted
                      ErrorDocument 403 /error/XAMPP_FORBIDDEN.html.var
                  </Directory>
              

              注意:这只是文本,为了xampp的安全性有一些搜索......

              【讨论】:

                【解决方案12】:

                在您的 xampppath\apache\conf\extra 打开文件 httpd-xampp.conf 并找到以下标签:

                <LocationMatch "^/(?i:(?:xampp|licenses|phpmyadmin|webalizer|server-status|server-info))">
                Order deny,allow
                Deny from all
                Allow from ::1 127.0.0.0/8 
                ErrorDocument 403   /error/HTTP_XAMPP_FORBIDDEN.html.var   
                

                并在Allow from ::1 127.0.0.0/8 {line}之后添加Allow from all

                重启xampp,就完成了。

                【讨论】:

                  【解决方案13】:

                  如果您使用的是使用“Bitnami”安装程序构建的较新的 XAMPP(例如 PHP 5.6、7),并且包含 Apache 2.4.x,则适用:

                  https://httpd.apache.org/docs/2.4/upgrading.html#run-time

                  2.2配置:

                  Order allow,deny
                  Allow from all
                  

                  2.4配置:

                  Require all granted
                  

                  这也适用于 VirtualHost 部分,如果您有任何自定义虚拟主机定义。

                  【讨论】:

                    【解决方案14】:

                    Ubuntu (Linux)

                    :- $ sudo gedit /opt/lampp/etc/extra/httpd-xampp.conf

                     Comment "Deny from all" in the following section,
                    

                    更改文件

                    # New XAMPP security concept
                    # <LocationMatch "^/(?i:(?:xampp|security|licenses|phpmyadmin|webalizer|server-status|server-info))">
                        Order deny,allow
                    
                       #Deny from all
                       #Require local
                        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
                    

                    【讨论】:

                      【解决方案15】:

                      对于许多人来说,这是一个权限问题,但对我来说,事实证明这个错误是由我试图提交的表单中的错误引起的。具体来说,我不小心在“action”的值后面加上了“>”符号。所以我建议你再看看你的代码

                      【讨论】:

                        【解决方案16】:

                        我尝试了一切,但没有任何效果。所以我只是使用:chmod -R 777 到 htdocs。至少它只在我当地。

                        【讨论】:

                          【解决方案17】:

                          其中一个原因也可能是 Skype!如果您使用默认的 XAMPP 设置,它们都将在同一个端口 (80) 上运行。你可以:

                          • 关闭 Skype
                          • 更改 XAMPP 端口

                          【讨论】:

                            【解决方案18】:

                            G:\xampp\apache\conf\extra\httpd-vhosts.conf

                            #start block
                            NameVirtualHost *:80
                            
                            <VirtualHost *:80>
                               ServerName localhost
                               #change your directory name
                               DocumentRoot "G:\xampp\htdocs"
                            </VirtualHost>
                            
                            #Your vertual Host
                            <VirtualHost *:80>
                                DocumentRoot "G:/xampp/htdocs/dev2018/guessbook"
                                ServerName dev.foreign-recruitment
                                <Directory "G:/xampp/htdocs/dev2018/guessbook/">
                            
                                </Directory>
                            </VirtualHost>
                            #end block
                            

                            【讨论】:

                              【解决方案19】:

                              这可能是因为配置错误,尤其是如果您的其他网站运行正常。

                              <VirtualHost cmsdemo.git:88>
                                  DocumentRoot "C:/Projects/rwp/"
                                  ServerName cmsdemo.git
                                  <Directory C:/Projects/cmsdemo/>
                                      Require all granted 
                                      AllowOverride All
                                  </Directory>
                              </VirtualHost>
                              

                              注意 DocumentRoot 我指定了一个文件夹,而在 Directory 中我指定了另一个文件夹,因此出现 403 错误。这解决了我的问题。

                              【讨论】:

                                【解决方案20】:

                                对于任何在使用 windows 使用 xampp 和 IIS 时遇到问题的人,

                                检查 apache 上的 xamp 面板正在使用哪个端口

                                假设 apache 使用端口 81 然后试试这个

                                http://127.0.0.1:81/
                                

                                对我来说就像魅力一样,它可能会在未来帮助某人

                                【讨论】:

                                  【解决方案21】:

                                  对于 Windows 10,这些选项对我不起作用。

                                  在不了解用户帐户控制 (UAC) 的初始警告的情况下多次重新安装后,我使用以下步骤:

                                  • 将 C:\xampp 重命名为 C:\xampp_old,
                                  • 手动创建 C:\xampp 文件夹
                                  • 在 C:\xampp 中重新安装 XAMPP
                                  • 将您的应用(如果已配置)移动到新的安装文件夹。

                                  现在,如果您愿意,可以删除 C:\xampp_old。 我试图在我的桌面文件夹中安装 XAMPP,但它失败了,因为我的 Windows 用户包含一个空格字符并且 Apache 没有运行。

                                  【讨论】:

                                    猜你喜欢
                                    • 2019-05-06
                                    • 2019-05-11
                                    • 2012-02-24
                                    • 2017-01-04
                                    相关资源
                                    最近更新 更多