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>
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:
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.
DirectoryIndex
OptionsbeispielDirectoryIndex index.html default.php welcome.php
Options Indexes
OptionWenn diese Option aktiviert ist, listet Apache den Verzeichnisinhalt auf, wenn keine Standarddatei gefunden wurde (von der oben genannten Option ????????).
Du erhältst eine 403 Verboten
DirectoryIndex
auf das Minimum..htaccess
-Dateien oder fügen Sie Ihre Änderungen in die Anweisung <Directory /my/directory>
eindeny,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
Order allow,deny
Allow from localhost mydomain.com
Nur localhost und * .mydomain.com können darauf zugreifen, alle anderen Hosts werden abgelehnt
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
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
Order allow,deny
Allow from all
Deny from hacker1.com
Deny from hacker2.com
Order deny,allow
Deny from all
Allow from mypc.localdomain
Allow from managment.localdomain
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
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.
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.
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;
}
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>
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.
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
Mit Apache 2.2
Order Deny,Allow
Allow from all
Mit Apache 2.4
Require all granted
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
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
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
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
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>
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.
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:
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.
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.
(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.
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
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 ...
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.
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
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
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 "
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.
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>
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.
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.
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.
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>
Ü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
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.
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>
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.
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.
Vergessen Sie nach dem Ändern der Konfigurationsdateien nicht Restart All Services
.
Ich habe drei Stunden meiner Zeit damit verschwendet.
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.
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>