错误消息“禁止您没有访问此服务器上的权限/”(关闭)

本文翻译自:Error message “Forbidden You don't have permission to access / on this server” [closed]

I have configured my Apache by myself and have tried to load phpMyAdmin on a virtual host, but I received: 我已经自己配置了Apache,并尝试在虚拟主机上加载phpMyAdmin ,但收到了以下信息:

403 Forbidden You don't have permission to access / on this server 403禁止访问您没有访问此服务器上的权限

My httpd.conf 我的httpd.conf

#
# This is the main Apache HTTP server configuration file.  It contains the
# configuration directives that give the server its instructions.
# See <URL:http://httpd.apache.org/docs/2.2> for detailed information.
# In particular, see 
# <URL:http://httpd.apache.org/docs/2.2/mod/directives.html>
# for a discussion of each configuration directive.
#
# Do NOT simply read the instructions in here without understanding
# what they do.  They're here only as hints or reminders.  If you are unsure
# consult the online docs. You have been warned.  
#
# Configuration and logfile names: If the filenames you specify for many
# of the server's control files begin with "/" (or "drive:/" for Win32), the
# server will use that explicit path.  If the filenames do *not* begin
# with "/", the value of ServerRoot is prepended -- so "logs/foo.log"
# with ServerRoot set to "C:/Program Files (x86)/Apache Software Foundation/Apache2.2" will be interpreted by the
# server as "C:/Program Files (x86)/Apache Software Foundation/Apache2.2/logs/foo.log".
#
# NOTE: Where filenames are specified, you must use forward slashes
# instead of backslashes (e.g., "c:/apache" instead of "c:\apache").
# If a drive letter is omitted, the drive on which httpd.exe is located
# will be used by default.  It is recommended that you always supply
# an explicit drive letter in absolute paths to avoid confusion.

#
# ServerRoot: The top of the directory tree under which the server's
# configuration, error, and log files are kept.
#
# Do not add a slash at the end of the directory path.  If you point
# ServerRoot at a non-local disk, be sure to point the LockFile directive
# at a local disk.  If you wish to share the same ServerRoot for multiple
# httpd daemons, you will need to change at least LockFile and PidFile.
#
ServerRoot "C:/Program Files (x86)/Apache Software Foundation/Apache2.2"

#
# Listen: Allows you to bind Apache to specific IP addresses and/or
# ports, instead of the default. See also the <VirtualHost>
# directive.
#
# Change this to Listen on specific IP addresses as shown below to 
# prevent Apache from glomming onto all bound IP addresses.
#
#Listen 12.34.56.78:80
Listen 127.0.0.1:80

Include conf/vhosts.conf

#
# Dynamic Shared Object (DSO) Support
#
# To be able to use the functionality of a module which was built as a DSO you
# have to place corresponding `LoadModule' lines at this location so the
# directives contained in it are actually available _before_ they are used.
# Statically compiled modules (those listed by `httpd -l') do not need
# to be loaded here.
#
# Example:
# LoadModule foo_module modules/mod_foo.so
#
LoadModule actions_module modules/mod_actions.so
LoadModule alias_module modules/mod_alias.so
LoadModule asis_module modules/mod_asis.so
LoadModule auth_basic_module modules/mod_auth_basic.so
#LoadModule auth_digest_module modules/mod_auth_digest.so
#LoadModule authn_alias_module modules/mod_authn_alias.so
#LoadModule authn_anon_module modules/mod_authn_anon.so
#LoadModule authn_dbd_module modules/mod_authn_dbd.so
#LoadModule authn_dbm_module modules/mod_authn_dbm.so
LoadModule authn_default_module modules/mod_authn_default.so
LoadModule authn_file_module modules/mod_authn_file.so
#LoadModule authnz_ldap_module modules/mod_authnz_ldap.so
#LoadModule authz_dbm_module modules/mod_authz_dbm.so
LoadModule authz_default_module modules/mod_authz_default.so
LoadModule authz_groupfile_module modules/mod_authz_groupfile.so
LoadModule authz_host_module modules/mod_authz_host.so
#LoadModule authz_owner_module modules/mod_authz_owner.so
LoadModule authz_user_module modules/mod_authz_user.so
LoadModule autoindex_module modules/mod_autoindex.so
#LoadModule cache_module modules/mod_cache.so
#LoadModule cern_meta_module modules/mod_cern_meta.so
LoadModule cgi_module modules/mod_cgi.so
#LoadModule charset_lite_module modules/mod_charset_lite.so
#LoadModule dav_module modules/mod_dav.so
#LoadModule dav_fs_module modules/mod_dav_fs.so
#LoadModule dav_lock_module modules/mod_dav_lock.so
#LoadModule dbd_module modules/mod_dbd.so
#LoadModule deflate_module modules/mod_deflate.so
LoadModule dir_module modules/mod_dir.so
#LoadModule disk_cache_module modules/mod_disk_cache.so
#LoadModule dumpio_module modules/mod_dumpio.so
LoadModule env_module modules/mod_env.so
#LoadModule expires_module modules/mod_expires.so
#LoadModule ext_filter_module modules/mod_ext_filter.so
#LoadModule file_cache_module modules/mod_file_cache.so
#LoadModule filter_module modules/mod_filter.so
#LoadModule headers_module modules/mod_headers.so
#LoadModule ident_module modules/mod_ident.so
#LoadModule imagemap_module modules/mod_imagemap.so
LoadModule include_module modules/mod_include.so
#LoadModule info_module modules/mod_info.so
LoadModule isapi_module modules/mod_isapi.so
#LoadModule ldap_module modules/mod_ldap.so
#LoadModule logio_module modules/mod_logio.so
LoadModule log_config_module modules/mod_log_config.so
#LoadModule log_forensic_module modules/mod_log_forensic.so
#LoadModule mem_cache_module modules/mod_mem_cache.so
LoadModule mime_module modules/mod_mime.so
#LoadModule mime_magic_module modules/mod_mime_magic.so
LoadModule negotiation_module modules/mod_negotiation.so
#LoadModule proxy_module modules/mod_proxy.so
#LoadModule proxy_ajp_module modules/mod_proxy_ajp.so
#LoadModule proxy_balancer_module modules/mod_proxy_balancer.so
#LoadModule proxy_connect_module modules/mod_proxy_connect.so
#LoadModule proxy_ftp_module modules/mod_proxy_ftp.so
#LoadModule proxy_http_module modules/mod_proxy_http.so
#LoadModule proxy_scgi_module modules/mod_proxy_scgi.so
#LoadModule reqtimeout_module modules/mod_reqtimeout.so
#LoadModule rewrite_module modules/mod_rewrite.so
LoadModule setenvif_module modules/mod_setenvif.so
#LoadModule speling_module modules/mod_speling.so
#LoadModule ssl_module modules/mod_ssl.so
#LoadModule status_module modules/mod_status.so
#LoadModule substitute_module modules/mod_substitute.so
#LoadModule unique_id_module modules/mod_unique_id.so
#LoadModule userdir_module modules/mod_userdir.so
#LoadModule usertrack_module modules/mod_usertrack.so
#LoadModule version_module modules/mod_version.so
#LoadModule vhost_alias_module modules/mod_vhost_alias.so
LoadModule php5_module "c:/Program Files/php/php5apache2_2.dll" 

<IfModule !mpm_netware_module>
<IfModule !mpm_winnt_module>
#
# If you wish httpd to run as a different user or group, you must run
# httpd as root initially and it will switch.  
#
# User/Group: The name (or #number) of the user/group to run httpd as.
# It is usually good practice to create a dedicated user and group for
# running httpd, as with most system services.
#
User daemon
Group daemon

</IfModule>
</IfModule>

# 'Main' server configuration
#
# The directives in this section set up the values used by the 'main'
# server, which responds to any requests that aren't handled by a
# <VirtualHost> definition.  These values also provide defaults for
# any <VirtualHost> containers you may define later in the file.
#
# All of these directives may appear inside <VirtualHost> containers,
# in which case these default settings will be overridden for the
# virtual host being defined.
#

#
# ServerAdmin: Your address, where problems with the server should be
# e-mailed.  This address appears on some server-generated pages, such
# as error documents.  e.g. admin@your-domain.com
#
ServerAdmin webmaster@somenet.com

#
# ServerName gives the name and port that the server uses to identify itself.
# This can often be determined automatically, but we recommend you specify
# it explicitly to prevent problems during startup.
#
# If your host doesn't have a registered DNS name, enter its IP address here.
#
#ServerName www.somenet.com:80

#
# DocumentRoot: The directory out of which you will serve your
# documents. By default, all requests are taken from this directory, but
# symbolic links and aliases may be used to point to other locations.
#
DocumentRoot "C:/Program Files (x86)/Apache Software Foundation/Apache2.2/htdocs"

#
# Each directory to which Apache has access can be configured with respect
# to which services and features are allowed and/or disabled in that
# directory (and its subdirectories). 
#
# First, we configure the "default" to be a very restrictive set of 
# features.  
#
<Directory />
    Options FollowSymLinks
    AllowOverride None
    Order deny,allow
    Deny from all
</Directory>

#
# Note that from this point forward you must specifically allow
# particular features to be enabled - so if something's not working as
# you might expect, make sure that you have specifically enabled it
# below.
#

#
# This should be changed to whatever you set DocumentRoot to.
#
<Directory "C:/Program Files (x86)/Apache Software Foundation/Apache2.2/htdocs">
    #
    # Possible values for the Options directive are "None", "All",
    # or any combination of:
    #   Indexes Includes FollowSymLinks SymLinksifOwnerMatch ExecCGI MultiViews
    #
    # Note that "MultiViews" must be named *explicitly* --- "Options All"
    # doesn't give it to you.
    #
    # The Options directive is both complicated and important.  Please see
    # http://httpd.apache.org/docs/2.2/mod/core.html#options
    # for more information.
    #
    Options Indexes FollowSymLinks

    #
    # AllowOverride controls what directives may be placed in .htaccess files.
    # It can be "All", "None", or any combination of the keywords:
    #   Options FileInfo AuthConfig Limit
    #
    AllowOverride None

    #
    # Controls who can get stuff from this server.
    #
    Order allow,deny
    Allow from all

</Directory>

#
# DirectoryIndex: sets the file that Apache will serve if a directory
# is requested.
#
<IfModule dir_module>
    DirectoryIndex index.html index.php
</IfModule>

#
# The following lines prevent .htaccess and .htpasswd files from being 
# viewed by Web clients. 
#
<FilesMatch "^\.ht">
    Order allow,deny
    Deny from all
    Satisfy All
</FilesMatch>

#
# ErrorLog: The location of the error log file.
# If you do not specify an ErrorLog directive within a <VirtualHost>
# container, error messages relating to that virtual host will be
# logged here.  If you *do* define an error logfile for a <VirtualHost>
# container, that host's errors will be logged there and not here.
#
ErrorLog "logs/error.log"

#
# LogLevel: Control the number of messages logged to the error_log.
# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
#
LogLevel warn

<IfModule log_config_module>
    #
    # The following directives define some format nicknames for use with
    # a CustomLog directive (see below).
    #
    LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
    LogFormat "%h %l %u %t \"%r\" %>s %b" common

    <IfModule logio_module>
      # You need to enable mod_logio.c to use %I and %O
      LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %I %O" combinedio
    </IfModule>

    #
    # The location and format of the access logfile (Common Logfile Format).
    # If you do not define any access logfiles within a <VirtualHost>
    # container, they will be logged here.  Contrariwise, if you *do*
    # define per-<VirtualHost> access logfiles, transactions will be
    # logged therein and *not* in this file.
    #
    CustomLog "logs/access.log" common

    #
    # If you prefer a logfile with access, agent, and referer information
    # (Combined Logfile Format) you can use the following directive.
    #
    #CustomLog "logs/access.log" combined
</IfModule>

<IfModule alias_module>
    #
    # Redirect: Allows you to tell clients about documents that used to 
    # exist in your server's namespace, but do not anymore. The client 
    # will make a new request for the document at its new location.
    # Example:
    # Redirect permanent /foo http://www.somenet.com/bar

    #
    # Alias: Maps web paths into filesystem paths and is used to
    # access content that does not live under the DocumentRoot.
    # Example:
    # Alias /webpath /full/filesystem/path
    #
    # If you include a trailing / on /webpath then the server will
    # require it to be present in the URL.  You will also likely
    # need to provide a <Directory> section to allow access to
    # the filesystem path.

    #
    # ScriptAlias: This controls which directories contain server scripts. 
    # ScriptAliases are essentially the same as Aliases, except that
    # documents in the target directory are treated as applications and
    # run by the server when requested rather than as documents sent to the
    # client.  The same rules about trailing "/" apply to ScriptAlias
    # directives as to Alias.
    #
    ScriptAlias /cgi-bin/ "C:/Program Files (x86)/Apache Software Foundation/Apache2.2/cgi-bin/"

</IfModule>

<IfModule cgid_module>
    #
    # ScriptSock: On threaded servers, designate the path to the UNIX
    # socket used to communicate with the CGI daemon of mod_cgid.
    #
    #Scriptsock logs/cgisock
</IfModule>

#
# "C:/Program Files (x86)/Apache Software Foundation/Apache2.2/cgi-bin" should be changed to whatever your ScriptAliased
# CGI directory exists, if you have that configured.
#
<Directory "C:/Program Files (x86)/Apache Software Foundation/Apache2.2/cgi-bin">
    AllowOverride None
    Options None
    Order allow,deny
    Allow from all
</Directory>

#
# DefaultType: the default MIME type the server will use for a document
# if it cannot otherwise determine one, such as from filename extensions.
# If your server contains mostly text or HTML documents, "text/plain" is
# a good value.  If most of your content is binary, such as applications
# or images, you may want to use "application/octet-stream" instead to
# keep browsers from trying to display binary files as though they are
# text.
#
DefaultType text/plain

<IfModule mime_module>
    #
    # TypesConfig points to the file containing the list of mappings from
    # filename extension to MIME-type.
    #
    TypesConfig conf/mime.types

    #
    # AddType allows you to add to or override the MIME configuration
    # file specified in TypesConfig for specific file types.
    #
    #AddType application/x-gzip .tgz
    #
    # AddEncoding allows you to have certain browsers uncompress
    # information on the fly. Note: Not all browsers support this.
    #
    #AddEncoding x-compress .Z
    #AddEncoding x-gzip .gz .tgz
    #
    # If the AddEncoding directives above are commented-out, then you
    # probably should define those extensions to indicate media types:
    #
    AddType application/x-compress .Z
    AddType application/x-gzip .gz .tgz

    #
    # AddHandler allows you to map certain file extensions to "handlers":
    # actions unrelated to filetype. These can be either built into the server
    # or added with the Action directive (see below)
    #
    # To use CGI scripts outside of ScriptAliased directories:
    # (You will also need to add "ExecCGI" to the "Options" directive.)
    #
    #AddHandler cgi-script .cgi

    # For type maps (negotiated resources):
    #AddHandler type-map var

    #
    # Filters allow you to process content before it is sent to the client.
    #
    # To parse .shtml files for server-side includes (SSI):
    # (You will also need to add "Includes" to the "Options" directive.)
    #
    #AddType text/html .shtml
    #AddOutputFilter INCLUDES .shtml

    AddType application/x-httpd-php .php 
</IfModule>

#
# The mod_mime_magic module allows the server to use various hints from the
# contents of the file itself to determine its type.  The MIMEMagicFile
# directive tells the module where the hint definitions are located.
#
#MIMEMagicFile conf/magic

#
# Customizable error responses come in three flavors:
# 1) plain text 2) local redirects 3) external redirects
#
# Some examples:
#ErrorDocument 500 "The server made a boo boo."
#ErrorDocument 404 /missing.html
#ErrorDocument 404 "/cgi-bin/missing_handler.pl"
#ErrorDocument 402 http://www.somenet.com/subscription_info.html
#

#
# MaxRanges: Maximum number of Ranges in a request before
# returning the entire resource, or one of the special
# values 'default', 'none' or 'unlimited'.
# Default setting is to accept 200 Ranges.
#MaxRanges unlimited

#
# EnableMMAP and EnableSendfile: On systems that support it, 
# memory-mapping or the sendfile syscall is used to deliver
# files.  This usually improves server performance, but must
# be turned off when serving from networked-mounted 
# filesystems or if support for these functions is otherwise
# broken on your system.
#
#EnableMMAP off
#EnableSendfile off

# Supplemental configuration
#
# The configuration files in the conf/extra/ directory can be 
# included to add extra features or to modify the default configuration of 
# the server, or you may simply copy their contents here and change as 
# necessary.

# Server-pool management (MPM specific)
#Include conf/extra/httpd-mpm.conf

# Multi-language error messages
#Include conf/extra/httpd-multilang-errordoc.conf

# Fancy directory listings
#Include conf/extra/httpd-autoindex.conf

# Language settings
#Include conf/extra/httpd-languages.conf

# User home directories
#Include conf/extra/httpd-userdir.conf

# Real-time info on requests and configuration
#Include conf/extra/httpd-info.conf

# Virtual hosts
#Include conf/extra/httpd-vhosts.conf

# Local access to the Apache HTTP Server Manual
#Include conf/extra/httpd-manual.conf

# Distributed authoring and versioning (WebDAV)
#Include conf/extra/httpd-dav.conf

# Various default settings
#Include conf/extra/httpd-default.conf

# Secure (SSL/TLS) connections
#Include conf/extra/httpd-ssl.conf
#
# Note: The following must must be present to support
#       starting without SSL on platforms with no /dev/random equivalent
#       but a statically compiled-in mod_ssl.
#
<IfModule ssl_module>
SSLRandomSeed startup builtin
SSLRandomSeed connect builtin
</IfModule>

PHPIniDir "c:/Program Files/php" 

and vhosts.conf: 和vhosts.conf:

NameVirtualHost 127.0.0.1:80

<VirtualHost 127.0.0.1:80>
    DocumentRoot i:/projects/webserver/__tools/phpmyadmin/
    ServerName dbadmin.tools
</VirtualHost>

#1楼

参考:https://stackoom.com/question/jcdj/错误消息-禁止您没有访问此服务器上的权限-关闭


#2楼

This article Creating virtual hosts on Apache 2.2 helps me (point 9) permissions to the top virtual hosts directory. 本文在Apache 2.2上创建虚拟主机可以帮助我(第9点)对顶级虚拟主机目录的访问权限。

I simply add this lines to my vhosts.conf file: 我只需将以下行添加到我的vhosts.conf文件中:

<Directory I:/projects/webserver>
    Order Deny,Allow
    Allow from all
</Directory>

#3楼

Update October 2016 2016年10月更新

4 years ago, since this answer is used as a reference by many, and while I learned a lot from security perspective during these years, I feel I am responsible to clarify some important notes, and I've update my answer accordingly. 4年前,由于这个答案被许多人用作参考,并且这些年来我从安全性角度学到了很多东西,所以我有责任澄清一些重要说明,并相应地更新了我的答案。

The original answer is correct but not safe for some production environments, in addition I would like to explain some issues that you might fall into while setting up your environment. 原始答案是正确的,但对于某些生产环境而言并不安全,此外,我还要解释一些在设置环境时可能会遇到的问题。

If you are looking for a quick solution and SECURITY IS NOT A MATTER, ie development env, skip and read the original answer instead 如果您正在寻找一种快速的解决方案,而“安全性不重要”,即开发环境,请跳过并阅读原始答案

Many scenarios can lead to 403 Forbidden : 许多情况下可能导致403 Forbidden


A. Directory Indexes (from mod_autoindex.c ) A.目录索引(来自mod_autoindex.c

When you access a directory and there is no default file found in this directory AND Apache Options Indexes is not enabled for this directory. 当你访问一个目录,有这个目录 Apache中没有发现默认的文件Options Indexes没有此目录启用。

A.1. A.1。 DirectoryIndex option example DirectoryIndex选项示例

DirectoryIndex index.html default.php welcome.php

A.2. A2。 Options Indexes option Options Indexes选项

If set, apache will list the directory content if no default file found (from the above 👆🏻 option) 如果设置,则apache将列出目录内容(如果未找到默认文件)(来自上述👆🏻选项)

If none of the conditions above is satisfied 如果以上条件都不满足

You will receive a 403 Forbidden 您将收到403 Forbidden

Recommendations 推荐建议

  • You should not allow directory listing unless REALLY needed. 除非确实需要,否则您不应允许目录列表。
  • Restrict the default index DirectoryIndex to the minimum. 将默认索引DirectoryIndex限制为最小值。
  • If you want to modify, restrict the modification to the needed directory ONLY, for instance, use .htaccess files, or put your modification inside the <Directory /my/directory> directive 如果要修改,则仅将修改限制在所需目录中,例如,使用.htaccess文件,或将您的修改放入<Directory /my/directory>指令中

B. deny,allow directives (Apache 2.2) B. deny,allow指令(Apache 2.2)

Mentioned by @Radu, @Simon A. Eugster in the comments You request is denied, blacklisted or whitelisted by those directives. @ Radu,@ Simon A. Eugster在评论中提及您的请求已被这些指令拒绝,列入黑名单或列入白名单。

I will not post a full explanation, but I think some examples may help you understand, in short remember this rule: 我不会发表完整的解释,但是我认为一些示例可以帮助您理解,简而言之,请记住以下规则:

IF MATCHED BY BOTH, THE LAST DIRECTIVE IS THE ONE THAT WILL WIN 如果两者都被匹配,那么最后一个指令将是一个获胜者

Order allow,deny

Deny will win if matched by both directives (even if an allow directive is written after the deny in the conf) 如果两个指令都匹配,则Deny将获胜(即使在conf中的deny之后写了allow指令)

Order deny,allow

allow will win if matched by both directives 如果两个指令都匹配,allow将获胜

Example 1 例子1

Order allow,deny
Allow from localhost mydomain.com

Only localhost and *.mydomain.com can access this, all other hosts are denied 只有localhost和* .mydomain.com可以访问此主机,所有其他主机均被拒绝

Example 2 例子2

Order allow,deny
Deny from evil.com
Allow from safe.evil.com # <-- has no effect since this will be evaluated first

All requests are denied, the last line may trick you, but remember that if matched by both the last win rule (here Deny is the last), same as written: 所有请求均被拒绝,最后一行可能会欺骗您,但请记住,如果两个最后的获胜规则(此处为“最后”)都匹配,则与以下内容相同:

Order allow,deny
Allow from safe.evil.com
Deny from evil.com # <-- will override the previous one 

Example 4 例子4

Order deny,allow
Allow from site.com
Deny from untrusted.site.com # <-- has no effect since this will be matched by the above `Allow` directive

Requests are accepted from all hosts 接受所有主机的请求

Example 4: typical for public sites (allow unless blacklisted) 示例4:典型的公共网站(允许,除非列入黑名单)

Order allow,deny
Allow from all
Deny from hacker1.com
Deny from hacker2.com

Example 5: typical for intranet and secure sites (deny unless whitelisted) 示例5:典型的Intranet和安全站点(除非列入白名单,否则拒绝)

Order deny,allow
Deny from all
Allow from mypc.localdomain
Allow from managment.localdomain

C. Require directive (Apache 2.4) C. Require指令(Apache 2.4)

Apache 2.4 use a new module called mod_authz_host Apache 2.4使用一个名为mod_authz_host的新模块

Require all granted => Allow all requests Require all granted =>允许所有请求

Require all denied => Deny all requests Require all denied =>拒绝所有请求

Require host safe.com => Only from safe.com are allowed Require host safe.com =>仅允许从safe.com


D. Files permissions D.文件权限

One thing that most people do it wrong is configuring files permissions, 大多数人做错的一件事是配置文件权限,

The GOLDEN RULE is 黄金法则是

STARTS WITH NO PERMISSION AND ADD AS PER YOUR NEED 无需许可即可开始,并根据需要添加

In linux: 在Linux中:

  • Directories should have the Execute permission 目录应具有Execute权限

  • Files should have the Read permission 文件应具有Read权限

  • YES, you are right DO NOT ADD Execute permission for files 是的,您是对的。请勿添加文件Execute权限

for instance, I use this script to setup the folders permissions 例如,我使用此脚本来设置文件夹权限

# setting permissions for /var/www/mysite.com

# read permission ONLY for the owner 
chmod -R /var/www/mysite.com 400 

# add execute for folders only
find /var/www/mysite.com -type d -exec chmod -R u+x {} \;

# allow file uploads 
chmod -R /var/www/mysite.com/public/uploads u+w

# allow log writing to this folder
chmod -R /var/www/mysite.com/logs/ 

I posted this code as an example, setup may vary in other situations 我以此代码为例,在其他情况下设置可能会有所不同



Original Answer 原始答案

I faced the same issue, but I solved it by setting the options directive either in the global directory setting in the httpd.conf or in the specific directory block in httpd-vhosts.conf : 我遇到了同样的问题,但是我通过在httpd.conf的全局目录设置或httpd-vhosts.conf的特定目录块中设置options指令解决了该问题:

Options Indexes FollowSymLinks Includes ExecCGI

By default, your global directory settings is (httpd.conf line ~188) : 默认情况下,您的全局目录设置为(httpd.conf line ~188)

<Directory />
    Options FollowSymLinks
    AllowOverride All
    Order deny,allow
    Allow from all
</Directory>

set the options to : Options Indexes FollowSymLinks Includes ExecCGI 设置选项为: Options Indexes FollowSymLinks Includes ExecCGI

Finally, it should look like: 最后,它看起来应该像:

<Directory />
    #Options FollowSymLinks
    Options Indexes FollowSymLinks Includes ExecCGI
    AllowOverride All
    Order deny,allow
    Allow from all
</Directory>

Also try changing Order deny,allow and Allow from all lines by Require all granted . 也可以尝试按Require all granted Allow from all行更改Order deny,allowAllow from all

Appendix 附录

Directory Indexes source code (some code remove for brevity) 目录索引源代码(为简洁起见,删除了一些代码)

if (allow_opts & OPT_INDEXES) {
     return index_directory(r, d);
} else {
        const char *index_names = apr_table_get(r->notes, "dir-index-names");

        ap_log_rerror(APLOG_MARK, APLOG_ERR, 0, r, APLOGNO(01276)
                      "Cannot serve directory %s: No matching DirectoryIndex (%s) found, and "
                      "server-generated directory index forbidden by "
                      "Options directive",
                       r->filename,
                       index_names ? index_names : "none");
        return HTTP_FORBIDDEN;
    }

#4楼

There is another way to solve this problem. 有另一种方法可以解决此问题。 Let us say you want to access directory "subphp" which exist at /var/www/html/subphp , and you want to access it using 127.0.0.1/subphp and you receive error like this: 假设您要访问/var/www/html/subphp存在的目录“ subphp”,并且要使用127.0.0.1/subphp来访问它,则会收到如下错误:

You don't have permission to access /subphp/ on this server. 您无权访问此服务器上的/ subphp /。

Then change the directory permissions from "None" to "access files". 然后将目录权限从“无”更改为“访问文件”。 A command-line user can use the chmod command to change the permission. 命令行用户可以使用chmod命令来更改权限。


#5楼

I was getting the same error and couldn't figure out the problem for ages. 我遇到了同样的错误,并且很长一段时间都无法解决问题。 If you happen to be on a Linux distribution that includes SELinux such as CentOS , you need to make sure SELinux permissions are set correctly for your document root files or you will get this error. 如果碰巧在包含SELinux之类的Linux发行版(例如CentOS)上 ,则需要确保为文档根文件正确设置了SELinux权限,否则会出现此错误。 This is a completely different set of permissions to the standard file system permissions. 这是与标准文件系统权限完全不同的一组权限。

I happened to use the tutorial Apache and SELinux , but there seems to be plenty around once you know what to look for. 我碰巧使用了Apache和SELinux教程,但是一旦您知道要查找的内容之后,似乎就会发现有很多东西。


#6楼

I solved my problem by adding my user to httpd.conf . 我通过将用户添加到httpd.conf解决了我的问题。

# User/Group: The name (or #number) of the user/group to run httpd as.
# It is usually good practice to create a dedicated user and group for
# running httpd, as with most system services.
#
#User daemon
User my_username
Group daemon
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
登录失败:未授予用户在此计算机上的请求登录类型。无法访问。您可能没有权限使用网络资源。请与这台服务器的管理员联系以查明您是否有访问权限。 如果出现“xxx计算机无法访问,您可能没有权限使用网络资源。请与这台服务器的管理员联系以查明您是否有访问权限”的报错,这可能是计算机的安全设置被改动过了,导致目标计算机无法被访问。可以采取以下步骤解决: 1. 取消简单文件共享。 打开“我的电脑”,在菜单上选择“工具”->“文件夹选项”->“查看”,清除“使用简单文件共享(推荐)”的选择。 2. 启用guest账户。 右键点击“我的电脑”,选择“管理”,选择“本地用户和组”->“用户”,右键点击Guest用户,选“属性”,清除“帐户已停用”的选择。 3. 在组策略中设置,安全策略。 开始--运行--gpedit.msc--计算机配置--windows设置--安全设置--本地策略--“用户权力指派”,双击右边的“从网络访问此计算机”,保证其中有Everyone,双击左边的“拒绝从网络访问此计算机”,保证其是空的。 4. 选择左边的“本地策略”->“安全选项”, a.确认右边的“网络访问:本地帐户的共享与安全模式”为“经典”; b.确认右边的“Microsoft网络客户:为通讯启用数字签名(总是)”为“已停用”; c.确认右边的“Microsoft网络客户:为通讯启用数字签名(如果服务器允许)”为“已启用”; d.确认右边的“Microsoft网络服务器:为通讯启用数字签名(总是)”为“已停用”; e.确认右边的“Microsoft网络服务器:为通讯启用数字签名(如果服务器允许)”为“已启用”。 5.正确配置网络防火墙 1>很多机器安装了网络防火墙,它的设置不当,同样导致用户无法访问本机的共享资源,这时就要开放本机共享资源所需的NetBIOS端口。笔者以天网防火墙为例,在“自定义IP规则”窗口中选中“允许局域网的机器使用我的共享资源”规则,最后点击“保存”按钮,这样就开放了NetBIOS端口 。 2>关闭windows自带防火墙。 6.合理设置用户访问权限 网络中很多机器使用 NTFS文件系统,它的ACL功能(访问控制列表)可以对用户的访问权限进行控制,用户要访问这些机器的共享资源,必须赋予相应的权限才行。如使用Guest账号访问该机器的CPCW共享文件夹,右键点击该共享目录,选择“属性”,切换到“安全”标签页,然后将Guest账号添加到用户列表中,接着指定Guest的访问权限,至少要赋予“读取”和“列出文件夹目录”权限。如果想让多个用户账号能访问该共享目录,只需要添加Eeryone账号,然后赋予“读取”和“列出文件夹?.. 7、网络协议配置问题, A、网络协议的安装和设置 1.在WinXP中安装NetBEUI协议 对的,你没有看错,就是要在WinXP中安装NetBEUI协议。微软在WinXP中只支持TCP/IP协议和NWLink IPX/SPX/NetBIOS兼容协议,正式宣布不再支持NetBEUI协议。但是在建立小型局域网的实际使用中,使用微软支持的两种协议并不尽如人意。比如,在解决网上邻居慢问题的过程中,笔者采用了诸多方法后网上邻居的速度虽然好一点,但还是慢如蜗牛;另外,在设置多块网卡的协议、客户和服务绑定时,这两种协议还存在BUG,多块网卡必须同时绑定所有的协议(除NWLink NetBIOS)、客户和服务,即使你取消某些绑定重启后系统又会自动加上,这显然不能很好地满足网络建设中的实际需要。而当笔者在WinXP中安装好NetBEUI协议后,以上两个问题都得到圆满的解决。 在WinXP安装光盘的“\\valueADD\\MSFT\\NET\\NETBEUI”目录下有3个文件,其中“NETBEUI.TXT”是安装说明,另外两个是安装NetBEUI协议所需的文件。安装的具体步骤如下: 复制“NBF.SYS”到“%SYSTEMROOT%\\SYSTEM32\\DRIVERS\\”目录; 复制“NETNBF.INF”到“%SYSTEMROOT%\\INF\\”目录; 在网络连接属性中单击“安装”按钮来安装NetBEUI协议。 注:%SYSTEMROOT%是WinXP的安装目录,比如笔者的WinXP安装在F:\\Windows目录下,就应该用F:\\Windows来替换%SYSTEMROOT%。 2.在WinXP中设置好其它网络协议 建议,如果你的局域网不用上Internet便只需要安装NetBEUI协议就行了。在小型局域网(拥有200台左右电脑的网络)中NetBEUI是占用内存最少、速度最快的一种协议,NWLink IPX/SPX/NetBIOS兼容协议则应当删除掉。 如果你的局域网要上Internet则必须安装T

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值