【问题标题】:Xampp Access Forbidden phpXampp访问禁止php
【发布时间】:2013-07-22 21:49:01
【问题描述】:

我是 Windows 用户。我已经使用 xampp 有一段时间了,但突然间我的 .php 文件现在都没有工作了! 我收到此错误消息:


禁止访问!

您无权访问请求的对象。它要么是读保护的,要么是服务器不可读的。

如果您认为这是服务器错误,请联系网站管理员。

错误 403

本地主机 Apache/2.4.4 (Win32) OpenSSL/0.9.8y PHP/5.4.16


我可以在 localhost/Practice 中看到我的 .php 文件列表(Practice 是我保存文件的文件夹) 每当我单击该文件时,它甚至会打开。 但是,当我单击任何文件中的任何“提交”按钮时,都会出现此错误。 请帮忙!我将 xampp 从 1.8.1 更新到 1.8.2 但仍然存在同样的问题!

【问题讨论】:

    标签: php xampp


    【解决方案1】:

    尝试使用下面的代码,将其添加到您的虚拟主机配置中。将此行添加到httpd-vhosts.conf 文件:

    <Directory "c:/<path-to-projects>/">
            Options Indexes FollowSymLinks MultiViews
            AllowOverride all
            Order Deny,Allow
            Allow from all
            Require all granted
    </Directory>
    

    我通过这种方式解决了同样的问题。希望对您有所帮助。

    注意:

    更改后请在隐身模式下进行测试,因为您是通过缓存重定向的

    【讨论】:

    • 密钥是Require all granted。这对我有用。谢谢!
    • 我的虚拟主机链接到不在 C: 上的文件夹无法正常工作并给我提到的错误,但这个答案终于解决了!
    • 应用这些更改后,请删除 ssl 插件和/或 .htaccess 文件,然后再次测试
    • 这似乎对我不起作用
    【解决方案2】:

    如果使用 ubuntu 操作系统,则检查 /Practice 文件夹的 chmod 更改读写权限

    打开终端按下快捷键 Ctrl+Alt+T 转到

    $ cd /opt/lampp/htdocs/

    并使用chmod命令更改文件夹读写和执行权限

    例如文件夹名称是实践和文件夹路径 /opt/lampp/htdocs/practice

    键入命令

    $ sudo chmod 777 -R Practice
    

    chmod777 是什么?访问此链接 http://linuxcommand.org/lts0070.php

    【讨论】:

    • 能否请您详细说明您的答案,添加更多关于您提供的解决方案的描述?
    • 这非常不安全,您不应该将整个文件夹的写入权限授予任何人!
    • 我认为应该是 sudo chmod -R 777 htdocs
    【解决方案3】:

    我解决这个问题的方法是首先正确设置错误日志

    <VirtualHost *:80>
        DocumentRoot "D:/websites/test/"
        ServerName test.dev
        ErrorLog "D:/websites/test/logs/error.log"
        CustomLog "D:/websites/test/logs/access.log" common
        <Directory D:/websites/test/>  
            AllowOverride none
            Require all granted  
        </Directory>
    </VirtualHost>
    

    在此错误被登录到“D:/websites/test/logs/”后确保自己创建日志文件夹。错误日志中记录的确切错误是

    AH01630:客户端被服务器配置拒绝:

    这指出我使用this link 来纠正上述错误的解决方案

    Require all granted 
    

    是必需的。我上面的示例代码顺便解决了这个问题。

    【讨论】:

    • 问题是关于设置的,API路由可能与此无关
    【解决方案4】:

    适用于 Mac 上的 XAMPP

    sudo chmod -R 0777 /Applications/XAMPP/xamppfiles/htdocs/myprojectname
    

    注意:请记住将“myprojectname”更改为您的实际项目名称。另外,请确保项目位于 htdocs 的根目录或相应更改路径。

    【讨论】:

    • 很高兴它有帮助!
    【解决方案5】:

    我在 ubuntu 16.04 中使用 xxamp - 它对我来说工作正常

    <VirtualHost *:80>
        DocumentRoot "/opt/lampp/htdocs/"
        ServerAdmin localhost
        <Directory "/opt/lampp/htdocs">
            Options Indexes FollowSymLinks
            AllowOverride All
            Require all granted
        </Directory>
    </VirtualHost>
    

    【讨论】:

      【解决方案6】:

      花了数小时在线研究后对我有用的唯一解决方案

      sudo chmod -R 0777 /opt/lampp/htdocs/projectname
      

      【讨论】:

      • 感谢使用 Xampp 内置终端执行代码的工作
      【解决方案7】:

      进入你的 Xampp 文件夹xampp/apache/conf/extra/httpd-xampp.c­onf

      编辑最后一段:

      #close XAMPP sites here 
      .
      .
      .
      Deny from all
      .
      .
      

      #close XAMPP sites here 
      .
      .
      .
      Allow from all
      .
      .
      

      或者只是观看这个视频:http://www.youtube.com/watch?v=ZUAKLUZa-AU

      【讨论】:

      • 我试过了!没用。。正如我所说,我可以访问 localhost,但是 .php 没有被任何解释器处理。
      • 查看您提交按钮指向的链接,可能它不是有效链接。它必须将表单提交到其他人所在的 xampp 目录中的文件。还要寻找命名错误,也许是example.php,但你写的是example.php ;)
      • 我明白了!我的代码中有一些错误!没有包含一些必需的文件!这就是为什么只有当我点击提交按钮时它才显示错误:) 无论如何谢谢:)
      【解决方案8】:

      对我来说,通过以下方式立即解决了

      1. 转到 C:\xampp\apache\conf\extra
      2. 在文件 httpd-xampp.conf 内编辑
      3. 如下编辑文件:

      通过 cont+f 找到以下行:

      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>
      

      在此之后,本地主机将停止显示错误并显示管理面板。 我在这里的视频中找到了这个解决方案: https://www.youtube.com/watch?v=MvYyEPaNNhE

      【讨论】:

        【解决方案9】:

        编辑此文件C:\xampp\apache\conf\httpd.conf 变化:

        AllowOverride none
        Require all denied
        

        AllowOverride All
        Options  All
        Allow from all
        Order allow,deny
        

        重启apache

        【讨论】:

          【解决方案10】:

          将 htdocs 文件夹移到 xampp 文件夹之外后,我遇到了这个问题。如果这样做,则需要更改 httpd.conf 中的文档根目录。见https://stackoverflow.com/a/1414/3543329

          【讨论】:

            【解决方案11】:

            我遇到了同样的问题。所以我被记住了。昨天我在 htttp-xampp.conf 中评论了这段代码

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

            所以我可以使用同一网络(LAN/WIFI)上的其他系统访问我的本地主机,因为它使本地主机需要本地。

            所以我就这样吧

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

            现在它可以在我的本地机器上运行,并且可以使用同一 LAN/WIFI 上的其他系统访问 localhost。

            【讨论】:

              【解决方案12】:

              在虚拟主机停止工作之前,您是否对它进行了任何更改?

              将此行添加到 xampp/apache/conf/extra/httpd-vhosts.conf

              <VirtualHost localhost:80>
                  DocumentRoot "C:/xampp/htdocs"
                  ServerAdmin localhost
                  <Directory "C:/xampp/htdocs">
                      Options Indexes FollowSymLinks
                      AllowOverride All
                      Require all granted
                  </Directory>
              </VirtualHost>
              

              【讨论】:

                【解决方案13】:
                A. #LoadModule vhost_alias_module modules/mod_vhost_alias.so
                B. <Directory />
                    AllowOverride none
                    Require all denied
                </Directory>
                

                替换为:

                A. LoadModule vhost_alias_module modules/mod_vhost_alias.so
                B:
                <Directory />
                    Options FollowSymLinks
                    AllowOverride All
                    Order allow,deny
                    Allow from all
                </Directory>
                

                来自E:\xamp**apache\conf/httpd.conf**

                【讨论】:

                • 这会将您的整个磁盘向任何成功访问您的 Web 服务器的黑客开放。你真是太好了,让他们的生活变得轻松愉快!
                • 如果你不明白 httpd.conf 文件的某个部分是做什么的,最好先在该手册中查找它,然后再给其他人提供如此糟糕的建议
                【解决方案14】:

                我得到了同样的错误,因为不知何故删除了 index.php 并在没有访问该文件夹的情况下 index.php 给出了同样的错误。

                【讨论】:

                  【解决方案15】:

                  以下步骤可能对任何人都有帮助

                  1. 检查apache2的错误日志
                  2. 检查文件夹权限是否可以访问 ?如果不设置
                  3. 在 vhost 文件中添加以下内容 选项索引 FollowSymLinks MultiViews 允许覆盖所有 订单拒绝,允许 允许所有人 要求所有授予
                  4. 最后但可能会节省时间,例如我的检查文件夹名称(区分大小写的“Pubic”与“public”不同)您放入 vhosts 文件和实际名称。 谢谢

                  【讨论】:

                    【解决方案16】:

                    在我的例子中,我将 Drupal 实例从服务器导出到 XAMPP 上的 localhost。它显然对文件和目录的所有权不公平,Apache 抛出了上述错误。

                    这是文件和目录最初的所有权:

                    要授予对我的文件的读取权限和对我的目录的执行权限,我可以这样做,以便所有用户都可以读取、写入和执行:

                    sudo chmod 777 -R
                    

                    但这不是理想的解决方案,因为这将被迁移回服务器,最终可能会出现安全漏洞。

                    此博客中给出了一个脚本:https://www.drupal.org/node/244924

                    #!/bin/bash
                    
                    # Help menu
                    print_help() {
                    cat <<-HELP
                    This script is used to fix permissions of a Drupal installation
                    you need to provide the following arguments:
                    
                      1) Path to your Drupal installation.
                      2) Username of the user that you want to give files/directories ownership.
                      3) HTTPD group name (defaults to www-data for Apache).
                    
                    Usage: (sudo) bash ${0##*/} --drupal_path=PATH --drupal_user=USER --httpd_group=GROUP
                    Example: (sudo) bash ${0##*/} --drupal_path=/usr/local/apache2/htdocs --drupal_user=john --httpd_group=www-data
                    HELP
                    exit 0
                    }
                    
                    if [ $(id -u) != 0 ]; then
                      printf "**************************************\n"
                      printf "* Error: You must run this with sudo or root*\n"
                      printf "**************************************\n"
                      print_help
                      exit 1
                    fi
                    
                    drupal_path=${1%/}
                    drupal_user=${2}
                    httpd_group="${3:-www-data}"
                    
                    # Parse Command Line Arguments
                    while [ "$#" -gt 0 ]; do
                      case "$1" in
                        --drupal_path=*)
                            drupal_path="${1#*=}"
                            ;;
                        --drupal_user=*)
                            drupal_user="${1#*=}"
                            ;;
                        --httpd_group=*)
                            httpd_group="${1#*=}"
                            ;;
                        --help) print_help;;
                        *)
                          printf "***********************************************************\n"
                          printf "* Error: Invalid argument, run --help for valid arguments. *\n"
                          printf "***********************************************************\n"
                          exit 1
                      esac
                      shift
                    done
                    
                    if [ -z "${drupal_path}" ] || [ ! -d "${drupal_path}/sites" ] || [ ! -f "${drupal_path}/core/modules/system/system.module" ] && [ ! -f "${drupal_path}/modules/system/system.module" ]; then
                      printf "*********************************************\n"
                      printf "* Error: Please provide a valid Drupal path. *\n"
                      printf "*********************************************\n"
                      print_help
                      exit 1
                    fi
                    
                    if [ -z "${drupal_user}" ] || [[ $(id -un "${drupal_user}" 2> /dev/null) != "${drupal_user}" ]]; then
                      printf "*************************************\n"
                      printf "* Error: Please provide a valid user. *\n"
                      printf "*************************************\n"
                      print_help
                      exit 1
                    fi
                    
                    cd $drupal_path
                    printf "Changing ownership of all contents of "${drupal_path}":\n user => "${drupal_user}" \t group => "${httpd_group}"\n"
                    chown -R ${drupal_user}:${httpd_group} .
                    
                    printf "Changing permissions of all directories inside "${drupal_path}" to "rwxr-x---"...\n"
                    find . -type d -exec chmod u=rwx,g=rx,o= '{}' \;
                    
                    printf "Changing permissions of all files inside "${drupal_path}" to "rw-r-----"...\n"
                    find . -type f -exec chmod u=rw,g=r,o= '{}' \;
                    
                    printf "Changing permissions of "files" directories in "${drupal_path}/sites" to "rwxrwx---"...\n"
                    cd sites
                    find . -type d -name files -exec chmod ug=rwx,o= '{}' \;
                    
                    printf "Changing permissions of all files inside all "files" directories in "${drupal_path}/sites" to "rw-rw----"...\n"
                    printf "Changing permissions of all directories inside all "files" directories in "${drupal_path}/sites" to "rwxrwx---"...\n"
                    for x in ./*/files; do
                      find ${x} -type d -exec chmod ug=rwx,o= '{}' \;
                      find ${x} -type f -exec chmod ug=rw,o= '{}' \;
                    done
                    echo "Done setting proper permissions on files and directories"
                    

                    并且需要调用命令:

                    sudo bash /Applications/XAMPP/xamppfiles/htdocs/fix-permissions.sh --drupal_path=/Applications/XAMPP/xamppfiles/htdocs/rkmission --drupal_user=daemon --httpd_group=admin
                    

                    在我的例子中,运行 Apache 的用户是“守护进程”。您可以通过 localhost 在 php 文件中运行此 php 脚本来识别用户:

                    <?php echo exec('whoami');?>
                    

                    以下是对 Drupal 具有正确文件权限的正确用户:

                    一旦传输回服务器,您可能需要将其更改回来!

                    【讨论】:

                      猜你喜欢
                      • 2017-09-21
                      • 2015-09-26
                      • 2018-10-07
                      • 2020-07-10
                      • 2015-11-11
                      • 2013-01-19
                      • 2014-10-22
                      • 2017-02-20
                      • 2018-05-02
                      相关资源
                      最近更新 更多