it-swarm.com.de

Fehlermeldung "Verboten Sie haben keine Berechtigung zum Zugriff / auf diesen Server"

Ich habe meinen Apache selbst konfiguriert und versucht, phpMyAdmin auf einen virtuellen Host zu laden, aber ich habe Folgendes erhalten:

403 Verboten Sie haben keine Berechtigung auf diesen Server zuzugreifen

Meine 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. [email protected]
#
ServerAdmin [email protected]

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

und vhosts.conf:

NameVirtualHost 127.0.0.1:80

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

Update Oktober 2016

Da diese Antwort von vielen als Referenz verwendet wird und ich in diesen Jahren aus Sicherheitsgründen viel gelernt habe, bin ich vor 4 Jahren dafür verantwortlich, einige wichtige Hinweise zu klären, und habe meine Antwort entsprechend aktualisiert.

Die ursprüngliche Antwort ist korrekt, für einige Produktionsumgebungen jedoch nicht sicher. Außerdem möchte ich einige Probleme erläutern, auf die Sie beim Einrichten Ihrer Umgebung möglicherweise stoßen.

Wenn Sie nach einer schnellen Lösung suchen und SICHERHEIT IS KEINE SACHE, d. H. Entwicklungsumgebung, überspringen und lesen Sie stattdessen die ursprüngliche Antwort

Viele Szenarien können zu 403 Forbidden führen:


A. Verzeichnisindizes (von mod_autoindex.c)

Wenn Sie auf ein Verzeichnis zugreifen und in diesem Verzeichnis keine Standarddatei gefunden wird UND Apache Options Indexes ist für dieses Verzeichnis nicht aktiviert.

A.1. DirectoryIndex Optionsbeispiel

DirectoryIndex index.html default.php welcome.php

A.2. Options Indexes Option

Wenn diese Option aktiviert ist, listet Apache den Verzeichnisinhalt auf, wenn keine Standarddatei gefunden wurde (von der oben genannten Option ????????).

Wenn keine der oben genannten Bedingungen erfüllt ist

Du erhältst eine 403 Verboten

Empfehlungen

  • Sie sollten das Auflisten von Verzeichnissen nur zulassen, wenn REALLY benötigt wird.
  • Beschränken Sie den Standardindex DirectoryIndex auf das Minimum.
  • Wenn Sie Änderungen vornehmen möchten, beschränken Sie die Änderung NUR auf das erforderliche Verzeichnis. Verwenden Sie beispielsweise .htaccess -Dateien oder fügen Sie Ihre Änderungen in die Anweisung <Directory /my/directory> ein

B. deny,allow Direktiven (Apache 2.2)

Erwähnt von @Radu, @Simon A. Eugster in den Kommentaren Ihre Anfrage wird von diesen Richtlinien abgelehnt, auf die schwarze Liste gesetzt oder auf die weiße Liste gesetzt.

Ich werde keine vollständige Erklärung veröffentlichen, aber ich denke, einige Beispiele können Ihnen das Verständnis erleichtern. Denken Sie kurz an diese Regel:

WENN BEIDES ZUSAMMENPASST, DIE LETZTE RICHTLINIE IS DIE, DIE GEWINNT

Order allow,deny

Deny gewinnt, wenn beide Direktiven übereinstimmen (auch wenn eine allow Direktive nach der deny in der conf geschrieben ist)

Order deny,allow

allow gewinnt, wenn beide Anweisungen übereinstimmen

Beispiel 1

Order allow,deny
Allow from localhost mydomain.com

Nur localhost und * .mydomain.com können darauf zugreifen, alle anderen Hosts werden abgelehnt

Beispiel 2

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

Alle Anfragen werden abgelehnt, die letzte Zeile kann Sie austricksen, aber denken Sie daran, dass, wenn beide der letzten Gewinnregel entsprechen (hier ist Verweigern die letzte), dasselbe wie geschrieben steht:

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

Beispiel 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

Anfragen werden von allen Gastgebern entgegengenommen

Beispiel 4: typisch für öffentliche Websites (zulassen, sofern nicht auf der schwarzen Liste)

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

Beispiel 5: Typisch für Intranet- und sichere Sites (Verweigern, sofern nicht auf der Whitelist aufgeführt)

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

C. Require Direktive (Apache 2.4)

Apache 2.4 verwendet ein neues Modul namens mod_authz_Host

Require all granted => Alle Anfragen zulassen

Require all denied => Alle Anfragen ablehnen

Require Host safe.com => Nur von safe.com erlaubt


D. Dateiberechtigungen

Eine Sache, die die meisten Leute falsch machen, ist das Konfigurieren von Dateiberechtigungen.

Die GOLDENE REGEL ist

BEGINNT OHNE ERLAUBNIS UND ERGÄNZT SICH NACH IHREN BEDÜRFNISSEN

Unter Linux:

  • Verzeichnisse sollten die Berechtigung Execute haben

  • Dateien sollten die Berechtigung Read haben

  • JA, Sie haben Recht, die Berechtigung Execute für Dateien NICHT HINZUFÜGEN

ich verwende dieses Skript beispielsweise, um die Ordnerberechtigungen einzurichten

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

Ich habe diesen Code als Beispiel gepostet. Das Setup kann in anderen Situationen variieren.



Ursprüngliche Antwort

Ich hatte das gleiche Problem, aber ich habe es gelöst, indem ich die options Direktive entweder in der globalen Verzeichniseinstellung in der httpd.conf gesetzt habe. oder im spezifischen Verzeichnisblock in httpd-vhosts.conf :

Options Indexes FollowSymLinks Includes ExecCGI

Standardmäßig lauten Ihre globalen Verzeichniseinstellungen (httpd.conf line ~188):

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

stell die Optionen auf: Options Indexes FollowSymLinks Includes ExecCGI

Schließlich sollte es so aussehen:

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

Versuchen Sie auch, die Zeilen Order deny,allow und Allow from all durch Require all granted zu ändern.

Blinddarm

Quellcode für Verzeichnisindizes (einige Codes wurden aus Gründen der Kürze entfernt)

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;
    }
648
amd

Ich verstehe, dass dieses Problem behoben ist, habe es aber selbst gelöst.

Der Grund für

Verboten Sie haben keine Berechtigung auf diesen Server zuzugreifen

ist eigentlich die Standardkonfiguration für ein Apache-Verzeichnis in httpd.conf.

#
# 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          # the cause of permission denied
</Directory>

Durch einfaches Ändern von Deny from all in Allow from all wird das Berechtigungsproblem gelöst.

Alternativ wäre ein besserer Ansatz, einzelne Verzeichnisberechtigungen für die Konfiguration von virtualhost anzugeben.

<VirtualHost *:80>
    ....

    # Set access permission
    <Directory "/path/to/docroot">
        Allow from all
    </Directory>

    ....
</VirtualHost>

Ab Apache-2.4 erfolgt die Zugriffskontrolle jedoch mit dem neuen Modul mod_authz_Host ( pgrade von 2.2 auf 2.4 ). Folglich sollte die neue Direktive Require verwendet werden.

<VirtualHost *:80>
    ....

    # Set access permission
    <Directory "/path/to/docroot">
        Require all granted
    </Directory>

    ....
</VirtualHost>
186
Czar Pino

Ein allgemeiner Fall für Verzeichnisse, die außerhalb des Standardverzeichnisses/var/www/gehostet werden, ist, dass der Apache-Benutzer nicht nur Berechtigungen für das Verzeichnis und die Unterverzeichnisse benötigt, in denen die Site gehostet wird. Apache benötigt Berechtigungen für alle Verzeichnisse bis zum Stammverzeichnis des Dateisystems, in dem die Site gehostet wird. Apache erhält bei der Installation automatisch Berechtigungen für/var/www /. Befindet sich Ihr Host-Verzeichnis also direkt darunter, gilt dies nicht für Sie. Bearbeiten: Daybreaker hat gemeldet, dass sein Apache ohne korrekte Zugriffsberechtigungen auf das Standardverzeichnis installiert wurde.

Sie haben beispielsweise eine Entwicklungsmaschine und das Verzeichnis Ihrer Site lautet:

/username/home/Dropbox/myamazingsite/

Sie könnten denken, Sie könnten durchkommen mit:

chgrp -R www-data /username/home/Dropbox/myamazingsite/
chmod -R 2750 /username/home/Dropbox/myamazingsite/

gibt dies Apache Berechtigungen für den Zugriff auf das Verzeichnis Ihrer Site? Nun, das ist richtig, aber es reicht nicht aus. Apache benötigt Berechtigungen für den gesamten Verzeichnisbaum. Sie müssen also Folgendes tun:

chgrp -R www-data /username/
chmod -R 2750 /username/

Offensichtlich würde ich nicht empfehlen, Apache auf einem Produktionsserver Zugriff auf eine vollständige Verzeichnisstruktur zu gewähren, ohne zu analysieren, was in dieser Verzeichnisstruktur enthalten ist. Für die Produktion ist es am besten, das Standardverzeichnis oder eine andere Verzeichnisstruktur beizubehalten, in der nur Webressourcen gespeichert sind.

Edit2: Wenn Sie nicht sicher sind, was Sie mit den Berechtigungen tun, sollten Sie, wie u/chimeraha ausführt, das Verzeichnis Ihrer Site aus Ihrem Ausgangsverzeichnis verschieben, um zu vermeiden, dass Sie möglicherweise aus Ihrem Ausgangsverzeichnis ausgeschlossen werden.

129
Giles Roberts

Einige Konfigurationsparameter haben sich in Apache 2.4 geändert. Ich hatte ein ähnliches Problem beim Einrichten einer Zend Framework 2 -Anwendung. Nach einiger Recherche ist hier die Lösung:

Falsche Konfiguration

<VirtualHost *:80>
    ServerName zf2-tutorial.localhost
    DocumentRoot /path/to/zf2-tutorial/public
    SetEnv APPLICATION_ENV "development"
    <Directory /path/to/zf2-tutorial/public>
        DirectoryIndex index.php
        AllowOverride All
        Order allow,deny #<-- 2.2 config
        Allow from all #<-- 2.2 config
    </Directory>
</VirtualHost>

Richtige Konfiguration

<VirtualHost *:80>
    ServerName zf2-tutorial.localhost
    DocumentRoot /path/to/zf2-tutorial/public
    SetEnv APPLICATION_ENV "development"
    <Directory /path/to/zf2-tutorial/public>
        DirectoryIndex index.php
        AllowOverride All
        Require all granted #<-- 2.4 New configuration
    </Directory>
</VirtualHost>

Wenn Sie eine Migration von Apache 2.2 auf 2.4 planen, finden Sie hier eine gute Referenz: http://httpd.Apache.org/docs/2.4/upgrading.html

60
hmoyat

Mit Apache 2.2

Order Deny,Allow
Allow from all

Mit Apache 2.4

Require all granted

Von http://httpd.Apache.org/docs/2.4/en/upgrading.html

42
mpgn

Am buntu 14.04 mit Apache 2.4 habe ich folgendes gemacht:

Fügen Sie der Datei Folgendes hinzu: Apache2.conf (unter /etc/Apache2):

<Directory /home/rocky/code/documentroot/>
  Options Indexes FollowSymLinks
  AllowOverride None
  Require all granted
</Directory>

und lade den Server neu:

Sudo service Apache2 reload

Bearbeiten: Dies funktioniert auch unter OS X Yosemite mit Apache 2.4. Die alles entscheidende Linie ist

Benötigen Sie alle gewährt

24
Rocky Inde

Wenn Sie einen WAMP Server verwenden, versuchen Sie Folgendes:

  • Klicken Sie einfach auf das WAMP-Serversymbol in der Taskleiste

  • Wählen Sie die Option Online schalten

  • Ihr Server wird automatisch neu gestartet

  • Versuchen Sie dann, auf Ihre lokale Website zuzugreifen

22
Sonu

Wenn Sie CentOS mit SELinux verwenden, versuchen Sie Folgendes:

Sudo restorecon -r /var/www/html

Weitere Informationen: https://www.centos.org/forums/viewtopic.php?t=6834#p31548

16
D Vy

Ich habe mein Problem gelöst, indem ich meinen Benutzer zu httpd.conf hinzugefügt habe.

# 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
16
jose.marke01

Dieser Artikel Erstellen virtueller Hosts unter Apache 2.2 hilft mir (Punkt 9) bei den Berechtigungen für das oberste Verzeichnis virtueller Hosts.

Ich füge einfach diese Zeilen zu meiner vhosts.conf-Datei hinzu:

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

Ich bekam den gleichen Fehler und konnte das Problem seit Ewigkeiten nicht herausfinden. Wenn Sie sich in einer Linux-Distribution befinden, die SELinux wie CentOS enthält, müssen Sie sicherstellen, dass die SELinux-Berechtigungen für Ihre Dokumentstammdateien korrekt festgelegt sind. Andernfalls erhalten Sie diese Error. Dies ist eine völlig andere Gruppe von Berechtigungen als die Standard-Dateisystemberechtigungen.

Ich habe zufällig das Tutorial Apache und SELinux verwendet, aber es scheint eine Menge zu geben, sobald Sie wissen, wonach Sie suchen müssen.

10
Dominic

Wenn Sie MAMP Pro verwenden, können Sie dies beheben, indem Sie das Kontrollkästchen Indexes auf der Registerkarte Hosts - Extended aktivieren.

In MAMP Pro v3.0.3 sieht das so aus: enter image description here

6
Dan

Es gibt einen anderen Weg, um dieses Problem zu lösen. Angenommen, Sie möchten auf das Verzeichnis "subphp" zugreifen, das unter /var/www/html/subphp vorhanden ist, und Sie möchten mit 127.0.0.1/subphp darauf zugreifen, und Sie erhalten die folgende Fehlermeldung:

Sie haben auf diesem Server keine Berechtigung zum Zugriff auf/subphp /.

Ändern Sie dann die Verzeichnisberechtigungen von "Keine" in "Zugriff auf Dateien". Ein Befehlszeilenbenutzer kann den Befehl chmod verwenden, um die Berechtigung zu ändern.

5
WASIM ASHRAF

Ich benutze Mac OS X, in meinem Fall vergesse ich nur, PHP in Apache zu aktivieren. Alles, was ich tun muss, ist, eine Zeile aus /etc/Apache2/httpd.conf zu entfernen:

LoadModule php5_module libexec/Apache2/libphp5.so

ref this Artikel für Details.

3
shellbye

(In Windows und Apache 2.2.x)

Der Fehler "Verboten" ist auch das Ergebnis, dass keine virtuellen Hosts definiert wurden.

Wie von Julien bemerkt, gehen Sie zur httpd-Datei und kommentieren Sie die folgende Zeile aus, wenn Sie den virtuellen hosts.conf verwenden möchten:

#Include conf/extra/httpd-vhosts.conf

Fügen Sie dann Ihre virtuellen Hostdefinitionen in conf/extra/httpd-vhosts.conf hinzu und starten Sie Apache neu.

2
oabarca

Ich bin auf dieses Problem gestoßen, und meine Lösung war außerdem, dass www-data nicht die richtigen Ordner besaß. Stattdessen habe ich es für einen der Benutzer festgelegt, damit er es besitzt. (Ich habe versucht, ein bisschen Fantasie zu entwickeln, aber es war ein falscher Trick, um FTP zum Spielen zu bringen.)

Nach dem Rennen:

chown -R www-data:www-data /var/www/html

Das Gerät hat wieder mit dem Versenden von Daten begonnen. Mit können Sie sehen, wem der Ordner derzeit gehört

ls -l /var/www/html
2
Adam Hollock

Ich hatte das gleiche Problem, aber aufgrund der Tatsache, dass ich den Pfad auf Apache in einen Ordner außerhalb von var/www geändert habe, bekam ich Probleme.

Ich habe es behoben, indem ich einen Symlink in var/www/html> home/dev/project erstellt habe, der den Trick zu machen schien, ohne dass ich irgendwelche Berechtigungen ändern musste ...

2
IonicBurger

Diese Lösung erlaubt nicht von allen

Ich möchte nur mein öffentliches Verzeichnis www ändern und von meinem PC und einem per WLAN verbundenen Mobiltelefon darauf zugreifen. Ich habe Ubuntu 16.04.

  1. Also habe ich zuerst modifiziert /etc/Apache2/sites-enabled/000-default.conf und ich habe die Zeile DocumentRoot/var/www/html für mein neues öffentliches Verzeichnis DocumentRoot "/ media/data/XAMPP/htdocs" geändert

  2. Dann habe ich /etc/Apache2/Apache2.conf geändert und die Berechtigungen für localhost und mein Mobiltelefon festgelegt. Diesmal habe ich die IP-Adresse verwendet. Ich weiß, dass sie nicht ganz sicher ist, aber für meine Zwecke in Ordnung.

    <Directory/>
        Options FollowSymLinks
        AllowOverride None
        Order deny,allow
        Deny from all
        Allow from localhost 10.42.0.11
    </Directory>
    

Versuchen Sie dies und fügen Sie nichts hinzu Order allow,deny und andere:

AddHandler cgi-script .cgi .py 
ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
<Directory "/usr/lib/cgi-bin">
    AllowOverride None
    Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
    Require all granted
    Allow from all
</Directory>

Sudo a2enmod cgi
Sudo service Apache2 restart
1
dastan
    I changed 
    Order Deny,Allow
    Deny From All      in .htaccess to   " Require all denied "    and restarted Apache but it did not help.

Der Pfad für Apache2.conf in Ubuntu lautet /etc/Apache2/Apache.conf

Dann habe ich folgende Zeilen in Apache2.conf hinzugefügt und dann funktioniert mein Ordner einwandfrei

    <Directory /path of required folder>
            Options Indexes FollowSymLinks
            AllowOverride All
            Require all granted
       </Directory>

   and run  " Sudo service Apache2 restart " 
1
Lakshmi

RiggsFolly hat das für mich anderswo beantwortet, einfach:

in deinem Apache conf Ordner edit file: httpd-vhost.conf:

Fügen Sie diese kleine Zeile in das Verzeichnisnest ein:

Require ip 192.168.1

Starten Sie den Server, Apache oder Wamp oder was auch immer Sie haben.

Jetzt können alle Ihre HOME-Geräte (im IP-Bereich 192.168.1.xxx) Ihren PC-Server sehen. Beachten Sie, dass Sie nur die ersten 3 Teile der IP-Nummer hinzufügen.

Bei Problemen beenden Sie Ihre Firewall zum Testen.

Laden Sie zum Anzeigen der IP-Nummern Ihrer Netzwerkgeräte eine "IP-Scanner" -Software (einige davon kostenlos) für den PC oder für Android get Fing aus dem Play Store herunter.

0
washere

Wir hatten Modsec aktiviert. Überprüfen Sie das Fehlerprotokoll der Site auf eine Modsec-ID und geben Sie dann eine Standortübereinstimmung für die Datei im vhost ein (oder, wie ich denke, .htaccess):

 <LocationMatch "/yourlocation/index.php">
    <IfModule security2_module>
        SecRuleRemoveById XXXXXXX
    </IfModule>
</LocationMatch>
0
wuxmedia

Berechtigungsfehler

Einige sehr unerfahrene Benutzer wie ich haben dieses Problem, wenn auf einer Seite falsche Berechtigungen festgelegt sind (insbesondere, wenn "andere" Benutzer nicht über Leseberechtigungen verfügen). Angenommen, Sie versuchen, auf index.html zuzugreifen, und der obige Fehler wird angezeigt. Geben Sie zum Beheben Folgendes ein:

chmod o+r index.html

und dann wieder auf den Server hochladen. Fehler verschwindet.

0
luchonacho

Nur um einen weiteren Beitrag zu bringen, als ich auch zu diesem Problem lief:

Ich hatte einen VirtualHost konfiguriert, den ich nicht wollte. Ich habe die Zeile, in der das Include für den vhost vorkam, auskommentiert und es hat funktioniert.

0

Das ist ziemlich lächerlich, aber ich habe den 403 Forbidden bekommen, als die Datei, die ich herunterladen wollte, nicht im Dateisystem vorhanden war. Der Apache-Fehler ist in diesem Fall nicht sehr genau, und das Ganze hat funktioniert, nachdem ich die Datei einfach dort abgelegt habe, wo sie eigentlich sein sollte.

0
Matthias

WORKING-Methode (sofern kein anderes Problem vorliegt)

Standardmäßig schränkt Apache den Zugriff von IPv4 (gemeinsame externe IP-Adresse) nicht ein

Eingeschränkt sind die Befehle in 'httpd.conf'.

Alles ersetzen

<Directory />
    AllowOverride none
    Require all denied
</Directory>

mit

<Directory />
    AllowOverride none
    # Require all denied
</Directory>

daher alle Beschränkungen für Apache aufheben.

Ersetzen Sie Require local durch Require all granted für das Verzeichnis C:/wamp/www/.

<Directory "c:/wamp/www/">
    Options Indexes FollowSymLinks
    AllowOverride all
    Require all granted
    # Require local
</Directory>
0
Jerin K. John

Überprüfen Sie genau, wo Sie Ihre Dateien ablegen. Verschachteln Sie sie nicht im Ordner "Dokumente".

Zum Beispiel habe ich den Fehler gemacht, meinen Code wie erwähnt in den Ordner "Documents" zu legen. Dies funktioniert nicht, da "Documents" explizit nur für SIE und nicht für Apache verfügbar ist. Versuchen Sie, es in ein anderes Verzeichnis zu verschieben. Möglicherweise wird dieses Problem nicht angezeigt.

Ordner verschieben von:

/ Users/YOURUSERNAME/Documents/code

Hierher:/Benutzer/IHR BENUTZERNAME/Code

0
James

Ich weiß, dass diese Frage bereits mehrere Antworten hat, aber ich denke, dass es einen sehr subtilen Aspekt gibt, der, obwohl er erwähnt wurde, in den vorherigen Antworten nicht genug hervorgehoben wurde.

Bevor Sie die Apache-Konfiguration oder die Berechtigungen Ihrer Dateien überprüfen, sollten Sie zunächst überprüfen, ob jeweils der Verzeichnisse, aus denen der vollständige Pfad zu der Datei besteht, auf die Sie zugreifen möchten (z. B. die Datei index.php in) Das Stammverzeichnis Ihres Dokuments ist nicht nur lesbar, sondern auch ausführbar für den Webserver-Benutzer.

Angenommen, der Pfad zum Stammverzeichnis Ihres Dokuments lautet "/ var/www/html". Sie müssen sicherstellen, dass alle Verzeichnisse "var", "www" und "html" vom Webserver-Benutzer (lesbar und) ausführbar sind. In meinem Fall (Ubuntu 16.04) hatte ich versehentlich das "x" -Flag für die "others" -Gruppe aus dem "html" -Verzeichnis entfernt, sodass die Berechtigungen folgendermaßen aussahen:

drwxr-xr-- 15 root root 4096 Jun 11 16:40 html

Wie Sie sehen, hatte der Webserver-Benutzer (für den in diesem Fall die Berechtigungen "Andere" gelten) keinen Ausführungs- Zugriff auf "html". Verzeichnis, und das war genau die Wurzel des Problems. Nach Erteilung eines:

chmod o+x html

befehl, das Problem wurde behoben!

Bevor ich mich auf diese Weise entschlossen habe, habe ich buchstäblich jeden anderen Vorschlag in diesem Thread ausprobiert. Da der Vorschlag in einem Kommentar begraben war, den ich fast zufällig gefunden habe, denke ich, dass es hilfreich sein kann, ihn hier hervorzuheben und zu erweitern.

0
Sal Borrelli

Um dieser wachsenden Liste ein weiteres potenzielles Problem hinzuzufügen, bestand mein Problem (unter CentOS 6.8) in einem bestimmten virtuellen Host, der auf einem anderen Server einwandfrei funktionierte. Das Problem stellte sich als fehlerhafte .htaccess-Datei mit mod_rewrite heraus:

In .htaccess verursachte dies einen 403-Fehler: <IfModule mod_rewrite.c> RewriteEngine On RewriteBase / </IfModule>

Das Hinzufügen von FollowSymLinks als erste Zeile behebt das Problem: <IfModule mod_rewrite.c> Options +FollowSymLinks RewriteEngine On RewriteBase / </IfModule>

0
Dave

Ich hatte dieses Problem, als ich SSHFS verwendete, um die Dateien in meinem VirtualBox-Gast von meinem lokalen Dateisystem aus einzuhängen, bevor ein Docker-Build ausgeführt wurde. Am Ende bestand die "Korrektur" darin, alle Dateien in die VirtualBox-Instanz zu kopieren, anstatt sie aus dem SSHFS-Mount heraus zu erstellen, und dann den Build von dort aus auszuführen.

0
Programster

Denken Sie daran, dass die in dieser Situation zu konfigurierende Datei nicht httpd.conf im phpMyAdmin-Alias ​​ist, sondern in bin/Apache/your_version/conf/httpd.conf.

Suchen Sie nach der folgenden Zeile:

DocumentRoot "c:/wamp/www/"

#
# 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
    Allow from all
</Directory>

Stellen Sie sicher, dass es auf Allow from all... eingestellt ist.

Wenn nicht, funktioniert phpMyAdmin möglicherweise sogar, aber nicht Ihr Stammverzeichnis und andere Ordner darunter. Denken Sie auch daran, WAMP neu zu starten und dann online zu stellen ...

Das löste meine Kopfschmerzen.

0
Ekene

Vergessen Sie nach dem Ändern der Konfigurationsdateien nicht Restart All Services.

Ich habe drei Stunden meiner Zeit damit verschwendet.

0

Ich hatte das gleiche Problem nur für einen bestimmten Controller - was wirklich komisch war. Im Stammverzeichnis des CI-Ordners befand sich ein Ordner mit demselben Namen wie der Controller, auf den ich zugreifen wollte. Aus diesem Grund leitete CI die Anforderung an dieses Verzeichnis und nicht an den Controller.

Nach dem Entfernen dieses Ordners (der ein wenig versehentlich vorhanden war) hat alles einwandfrei funktioniert.

Um es klarer zu machen, hier ist, wie es aussah:

/ci/controller/register.php

/ci/register/

Ich musste /ci/register/ entfernen.

0
Antony P.

Sie können die youralias.conf -Datei wie folgt ändern:

Alias /Quiz/ "h:/MyServer/Quiz/" 
 <Directory "h:/MyServer/Quiz/">
   Options Indexes FollowSymLinks
   AllowOverride all
   <IfDefine Apache24>
     Require local
   </IfDefine>
   <IfDefine !Apache24>
    Order Deny,Allow
    Deny from all
    Allow from localhost ::1 127.0.0.1
   </IfDefine>
 </Directory>
0
Iman Marashi