Thông báo lỗi Cấm Cấm Bạn không có quyền truy cập / trên máy chủ này. [Đã đóng]


520

Tôi đã tự cấu hình Apache của mình và đã thử tải phpMyAdmin trên máy chủ ảo, nhưng tôi đã nhận được:

403 Cấm Bạn không có quyền truy cập / trên máy chủ này

Httpd.conf của tôi

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

và vhosts.conf:

NameVirtualHost 127.0.0.1:80

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

Các quyền của thư mục http là gì và ai sở hữu nó?
Oliver

Nó nằm trên máy cục bộ của tôi dưới windows 7, và bạn muốn nói đến thư mục nào? i: / dự án / máy chủ web / __ công cụ / phpmyadmin /?
Dmytro Zarezenko

có apache chạy như daemon người dùng. Người dùng này có quyền đọc các tập tin không?
Oliver

vâng, tôi thuộc quyền quản trị
Dmytro Zarezenko

4
kiểm tra xem bạn không có .htaccesstệp ghi đè để từ chối quyền truy cập (trong thư mục) mà bạn đang cố truy cập
Ujjwal Singh

Câu trả lời:


662

Cập nhật tháng 10 năm 2016

4 năm trước, vì câu trả lời này được nhiều người sử dụng làm tài liệu tham khảo và trong khi tôi học được rất nhiều từ quan điểm bảo mật trong những năm này, tôi cảm thấy mình có trách nhiệm làm rõ một số lưu ý quan trọng và tôi đã cập nhật câu trả lời của mình cho phù hợp.

Câu trả lời ban đầu là đúng nhưng không an toàn cho một số môi trường sản xuất, ngoài ra tôi muốn giải thích một số vấn đề mà bạn có thể gặp phải trong khi thiết lập môi trường của mình.

Nếu bạn đang tìm kiếm một giải pháp nhanh chóng và BẢO MẬT KHÔNG PHẢI LÀ VẤN ĐỀ, tức là phát triển env, hãy bỏ qua và đọc câu trả lời ban đầu

Nhiều kịch bản có thể dẫn đến 403 Cấm :


A. Chỉ mục thư mục (từ mod_autoindex.c)

Khi bạn truy cập một thư mục và không có tệp mặc định nào được tìm thấy trong thư mục này Apache Options Indexeskhông được bật cho thư mục này.

A.1. DirectoryIndexví dụ tùy chọn

DirectoryIndex index.html default.php welcome.php

A.2. Options IndexesLựa chọn

Nếu được đặt, apache sẽ liệt kê nội dung thư mục nếu không tìm thấy tệp mặc định (từ tùy chọn above ở trên)

Nếu không có điều kiện nào ở trên được thỏa mãn

Bạn sẽ nhận được 403 Cấm

khuyến nghị

  • Bạn không nên cho phép danh sách thư mục trừ khi thực sự cần thiết.
  • Hạn chế chỉ số mặc định DirectoryIndexở mức tối thiểu.
  • Nếu bạn muốn thay đổi, hãy hạn chế việc sửa đổi vào thư mục cần thiết ONLY, ví dụ, sử dụng .htaccesstác phẩm, hoặc đặt sửa đổi của bạn bên trong <Directory /my/directory>chỉ thị

B. deny,allowchỉ thị (Apache 2.2)

Được đề cập bởi @Radu, @Simon A. Eugster trong các bình luận Bạn yêu cầu bị từ chối, đưa vào danh sách đen hoặc đưa vào danh sách trắng bởi những chỉ thị đó.

Tôi sẽ không đăng một lời giải thích đầy đủ, nhưng tôi nghĩ rằng một số ví dụ có thể giúp bạn hiểu, tóm lại hãy nhớ quy tắc này:

NẾU BẮT ĐẦU B BNG CẢ HAI, TRỰC TIẾP CUỐI CÙNG LÀ MỘT THÌ S WIN THẮNG

Order allow,deny

Từ chối sẽ giành chiến thắng nếu được kết hợp bởi cả hai chỉ thị (ngay cả khi một lệnh allowđược viết sau khi denytrong conf)

Order deny,allow

cho phép sẽ giành chiến thắng nếu phù hợp bởi cả hai chỉ thị

ví dụ 1

Order allow,deny
Allow from localhost mydomain.com

Chỉ localhost và * .mydomain.com có ​​thể truy cập này, tất cả các máy chủ khác đều bị từ chối

Ví dụ 2

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

Tất cả các yêu cầu đều bị từ chối, dòng cuối cùng có thể lừa bạn, nhưng hãy nhớ rằng nếu phù hợp với cả quy tắc thắng cuối cùng (ở đây Deny là cuối cùng), giống như được viết:

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

Ví dụ 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

Yêu cầu được chấp nhận từ tất cả các máy chủ

Ví dụ 4: điển hình cho các trang web công cộng (cho phép trừ khi được đưa vào danh sách đen)

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

Ví dụ 5: điển hình cho các trang web an toàn và mạng nội bộ (từ chối trừ khi có danh sách trắng)

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

C. Requirechỉ thị (Apache 2.4)

Apache 2.4 sử dụng một mô-đun mới gọi là mod_authz_host

Require all granted => Cho phép tất cả các yêu cầu

Require all denied => Từ chối tất cả các yêu cầu

Require host safe.com => Chỉ từ safe.com được cho phép


D. Quyền truy cập tệp

Một điều mà hầu hết mọi người làm sai là cấu hình quyền tập tin,

QUY TẮC VÀNG là

BẮT ĐẦU KHÔNG CÓ GIẤY PHÉP VÀ THÊM NHƯ M PERI NHU CẦU CỦA BẠN

Trong linux:

  • Thư mục cần có sự Executecho phép

  • Các tập tin nên có sự Readcho phép

  • CÓ, bạn đúng KHÔNG THÊM Executequyền cho các tệp

ví dụ, tôi sử dụng tập lệnh này để thiết lập các quyền của thư mục

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

Tôi đã đăng mã này làm ví dụ, thiết lập có thể thay đổi trong các tình huống khác



Câu trả lời gốc

Tôi đã đối mặt với cùng một vấn đề, nhưng tôi đã giải quyết nó bằng cách đặt chỉ thị tùy chọn trong cài đặt thư mục chung trong httpd.conf hoặc trong khối thư mục cụ thể trong httpd-vhosts.conf :

Options Indexes FollowSymLinks Includes ExecCGI

Theo mặc định, cài đặt thư mục toàn cầu của bạn là (httpd.conf line ~188):

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

đặt các tùy chọn thành: Options Indexes FollowSymLinks Includes ExecCGI

Cuối cùng, nó sẽ trông như:

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

Cũng thử thay đổi Order deny,allowAllow from alldòng bằng Require all granted.

ruột thừa

Thư mục Chỉ mục mã nguồn (một số mã loại bỏ cho ngắn gọn)

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

41
Ngoài ra, người ta nên kiểm tra các quyền của thư mục để chủ sở hữu quy trình Apache có quyền đọc / thực thi đường dẫn đã chỉ định cho máy chủ ảo. Trên Windows, điều này hiếm khi có thể là một vấn đề nhưng trên Linux, nó có thể là nguyên nhân thường xuyên hơn của 403.
Radu

76
Tôi cũng đã phải thay đổi Order deny,allow, Allow from allthành Require all grantedtrên Apache 2.4. Xem tại đây: httpd.apache.org/docs/2.4/upgrad.html
Simon A. Eugster

52
chỉ sau khi thêm Require all grantednó hoạt động
pylover

1
@pylover không và lộn xộn lập cấu hình của tôi ... (và một trong những điều này anh chàng quá stackoverflow.com/questions/19263135/... )
Stephane Paquet

6
Câu trả lời này là RẤT NHIỀU ! Bạn KHÔNG BAO GIỜ được đặt Allow from alltrong <Directory />phần httpd.confThats chỉ là một tin tặc thích thú
RiggsFolly

187

Tôi hiểu vấn đề này đã được giải quyết nhưng tôi đã tự mình giải quyết vấn đề này.

Nguyên nhân của

Cấm Bạn không có quyền truy cập / trên máy chủ này

thực sự là cấu hình mặc định cho một thư mục apache trong 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>

Đơn giản chỉ cần thay đổi Deny from allđể Allow from allgiải quyết vấn đề cho phép.

Ngoài ra, một cách tiếp cận tốt hơn sẽ là chỉ định các quyền thư mục riêng lẻ trên cấu hình virtualhost.

<VirtualHost *:80>
    ....

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

    ....
</VirtualHost>

Tuy nhiên, đối với Apache-2.4 , kiểm soát truy cập được thực hiện bằng cách sử dụng mô-đun mới mod_authz_host( Nâng cấp lên 2.4 từ 2.2 ). Do đó, Requirechỉ thị mới nên được sử dụng.

<VirtualHost *:80>
    ....

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

    ....
</VirtualHost>

Apache / 2.2.24 trên OSX 10.6.8. 1) Bài đăng này và 2) các hướng dẫn tại đây: thegeek ware.com/2011/07/apache-virtual-host (Bạn sẽ nhận được cảnh báo rằng dòng NameVirtualHost *:80này không có gì, vì vậy bạn có thể xóa nó. Bạn cũng phải tạo thư mục cho các logfiles.) và ...
7stud

1
3) thêm dòng 127.0.0.1 web_site_name.comvào dưới cùng của tập tin / private / etc / hosts làm việc cho tôi. Nếu bạn có thiết lập Apache để nghe, giả sử, cổng 8080, sau đó sử dụng <VirtualHost *:8080>và giống như bạn phải sử dụng url http://localhost:8080, bạn sẽ cần sử dụng url http://web_site_name.com:8080. 4) Cuối cùng, tôi đã sử dụng cấu hình <Directory> của @ hmoyat (trong một trong những câu trả lời khác) vì nó có vẻ cụ thể hơn.
7stud

1
Xin chào @eagor. Hãy chắc chắn cũng kích hoạt tiện ích mở rộng MCrypt (không chỉ cài đặt nó). Lỗi đó cũng liên quan đến PHP nhiều hơn Apache, vì vậy bạn sẽ muốn thử stackoverflow.com/q/16830405/1349295 hoặc các luồng tương tự.
Sa hoàng Pino

3
Hãy kiên nhẫn với việc cấp quyền truy cập vào thư mục gốc của bạn. Nó không an toàn. Tốt hơn là cấp quyền truy cập vào thư mục cụ thể (bạn muốn hiển thị cho công chúng).
cướp

1
Đối với những người đã sử dụng <Directory />, cách thiết lập quyền truy cập được đề xuất là cho mỗi thư mục (nghĩa là <Directory "/path/to/docroot">). Ví dụ trước của tôi được sử dụng <Directory />mà dường như cấp quyền truy cập máy chủ từ xa cho toàn bộ hệ thống tệp. Tôi hiện không biết chính xác làm thế nào điều này có thể được sử dụng bởi một cracker ngoại trừ việc cung cấp nhiều quyền hơn mức cần thiết là một bảo mật cơ bản không. Tôi đã cập nhật câu trả lời của mình cho hậu thế. Xin lỗi vì sự thiếu hiểu biết về bảo mật. httpd.apache.org/docs/civerse/misc/ từ
Czar Pino

131

Một vấn đề chung cho các thư mục được lưu trữ bên ngoài mặc định / var / www / là người dùng Apache không cần quyền truy cập vào thư mục và thư mục con nơi trang web đang được lưu trữ. Apache yêu cầu quyền cho tất cả các thư mục cho đến tận gốc của hệ thống tệp nơi trang web được lưu trữ. Apache tự động nhận các quyền được gán cho / var / www / khi nó được cài đặt, vì vậy nếu thư mục máy chủ của bạn nằm ngay bên dưới thì điều này không áp dụng cho bạn. Chỉnh sửa: Daybreaker đã báo cáo rằng Apache của anh ta đã được cài đặt mà không có quyền truy cập chính xác vào thư mục mặc định.

Ví dụ: bạn đã có một máy phát triển và thư mục trang web của bạn là:

/username/home/Dropbox/myamazingsite/

Bạn có thể nghĩ rằng bạn có thể thoát khỏi:

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

bởi vì điều này cho phép Apache truy cập vào thư mục trang web của bạn? Vâng, điều đó đúng nhưng không đủ. Apache yêu cầu quyền trên toàn bộ cây thư mục, vì vậy điều bạn cần làm là:

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

Rõ ràng tôi sẽ không khuyên bạn nên cấp quyền truy cập vào Apache trên một máy chủ sản xuất cho một cấu trúc thư mục hoàn chỉnh mà không phân tích những gì trong cấu trúc thư mục đó. Để sản xuất, tốt nhất là giữ thư mục mặc định hoặc cấu trúc thư mục khác chỉ để giữ tài sản web.

Edit2: như u / chimeraha đã chỉ ra, nếu bạn không chắc chắn mình đang làm gì với quyền, tốt nhất nên chuyển thư mục trang web của bạn ra khỏi thư mục chính của bạn để tránh khả năng tự khóa khỏi thư mục chính của bạn.


2
Câu trả lời của bạn đã giúp rất nhiều. Vì một số lý do, / var / www của tôi không được thiết lập để người dùng apache truy cập. Cảm ơn!
ngày

1
@Craig Đó là sự tiến bộ. Nó có nghĩa là bạn đã giải quyết vấn đề quyền ban đầu của bạn. Bắt đầu xem qua các tệp nhật ký ứng dụng / Apache của bạn để xác định nguyên nhân gây ra lỗi 500.
Giles Roberts

5
Nhờ câu trả lời này, tôi đã tự khóa thành công khỏi cây thư mục / home ... :)
Seniorpreacher

1
Làm điều này: chgrp -R apache / tên người dùng / đã khắc phục sự cố cho tôi! nhưng cũng giống như Edifice, bây giờ tôi không thể truy cập vào cây thư mục nhà của mình trừ khi tôi quay lại với người dùng của mình. Vì vậy, bây giờ tôi cần thay đổi người dùng ban đầu của mình để thay đổi thông qua git. Sau đó thay đổi trở lại apache để triển khai lại máy chủ của tôi. đây có phải cách duy nhất không?
anc1revv

1
chmod -R 2750 - số 2 có nghĩa là gì? 7 - quyền rwe cho chủ sở hữu, 5 - re cho nhóm và 0 - không có gì cho người khác. Nhưng 2 là gì? Cảm ơn
Tebe

62

Một số tham số cấu hình đã thay đổi trong Apache 2.4. Tôi gặp vấn đề tương tự khi tôi thiết lập ứng dụng Zend Framework 2 . Sau một số nghiên cứu, đây là giải pháp:

Cấu hình không chính xác

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

Cấu hình đúng

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

Nếu bạn đang có kế hoạch di chuyển từ Apache 2.2 sang 2.4, thì đây là một tài liệu tham khảo tốt: http://httpd.apache.org/docs/2.4/upgrad.html


Cảm ơn! Bạn trả lời là đúng trên nhãn hiệu!
Mladen Ilić


24

Trên Ubuntu 14.04 sử dụng Apache 2.4 , tôi đã làm như sau:

Thêm phần sau vào tệp, apache2.conf (bên dưới /etc/apache2):

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

và tải lại máy chủ:

sudo service apache2 reload

Chỉnh sửa: Điều này cũng hoạt động trên OS X Yosemite với Apache 2.4. Dòng quan trọng là

Yêu cầu tất cả được cấp


22

Nếu bạn đang sử dụng máy chủ WAMP thì hãy thử điều này:

  • Một lần bấm vào biểu tượng máy chủ WAMP trên thanh tác vụ

  • Chọn tùy chọn đưa trực tuyến

  • Máy chủ của bạn sẽ tự động khởi động lại

  • Sau đó thử truy cập localwebsite của bạn


19

Nếu bạn đang sử dụng CentOS với SELinux, hãy thử:

sudo restorecon -r /var/www/html

Xem thêm: https://www.centos.org/forums/viewtopic.php?t=6834#p31548


4
Toàn bộ Internet cho người đàn ông này, anh ta đã kiếm được nó.
UrielUVD

1
Bạn đã cứu mạng tôi. Tôi không biết tại sao nó không được chỉ ra ở nơi nào khác ...
Erikas

1
Bạn đã cứu ngày của tôi, cảm ơn!
Antony Fuentes Artavia

2
Đây là câu trả lời quan trọng nhất trên internet
Vladimir Lazarevski

17

Tôi đã giải quyết vấn đề của mình bằng cách thêm người dùng của mình vào 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

2
Câu trả lời không có ý nghĩa. Userđược đưa ra hai lần và lần cuối cùng UsermyuserUser deamon? Ngoài ra xin vui lòng sửa phong cách của câu trả lời của bạn, nó khá khó đọc những gì nên có trong httpd.confvà những gì không. Nó cũng không giải thích được tại sao điều này giải quyết vấn đề
dbf

2
Tôi chỉ thay đổi "người dùng" và "nhóm" thành tên người dùng của mình và điều này cũng có hiệu quả với tôi.
anc1revv

2
Thưa ngài là một ơn trời! Tôi không thể tìm ra điều này và cập nhật cả người dùng và nhóm của tôi cho người dùng mà tôi đang làm việc rất tốt. Đã xảy ra khi tôi sao chép một VM sản xuất và đang thiết lập một người dùng mới để phát triển VM.
Richard Ortega

Câu trả lời này hữu ích nhất đối với tôi
mafonya

14

Bài viết này Tạo máy chủ ảo trên Apache 2.2 giúp tôi (điểm 9) quyền vào thư mục máy chủ ảo hàng đầu.

Tôi chỉ cần thêm dòng này vào tệp vhosts.conf của mình:

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

Tôi đang gặp vấn đề, tôi đã thay đổi đường dẫn gốc tài liệu trong ubfox 14.04 của tôi từ / var / www / html / sang / media / user / dự án / php /: DocumentRoot / media / mithun / Project / Pages / php <Directory / media / người dùng / dự án / php /> Tùy chọn Chỉ mục FollowSymLinks AllowOverride Không có Yêu cầu tất cả được cấp </ Directory> Nó không hoạt động. Có ai giúp đỡ không?
Mithun Shreevatsa

11

Tôi đã nhận được cùng một lỗi và không thể tìm ra vấn đề từ lâu. Nếu bạn tình cờ có trên một bản phân phối Linux bao gồm SELinux, chẳng hạn như CentOS , bạn cần đảm bảo các quyền của SELinux được đặt chính xác cho các tệp gốc tài liệu của bạn nếu không bạn sẽ gặp lỗi này. Đây là một tập hợp quyền hoàn toàn khác với quyền hệ thống tệp tiêu chuẩn.

Tôi tình cờ sử dụng hướng dẫn Apache và SELinux , nhưng dường như có rất nhiều thứ xung quanh một khi bạn biết phải tìm gì.


Cảm ơn! SELinux đã gây ra vấn đề của tôi. Tôi đã vô hiệu hóa nó và bây giờ tôi có thể truy cập các tệp html nằm ngoài thư mục / var / www / mặc định. Bây giờ tôi sẽ xem hướng dẫn này để xem liệu tôi có thể kích hoạt và định cấu hình để tôi vẫn có thể truy cập các tệp của mình không.
yellavon

Bạn có biết tại sao restorecon /var/www/*lệnh sẽ đưa mọi thứ trở lại var_tthay vì http_sys_content_thay tmp_tkhông? Loại var_tgây ra 403 Forbiddenlỗi.
errolflynn

6

Nếu bạn đang sử dụng MAMP Pro, cách khắc phục là bằng cách Indexeschọn hộp kiểm bên dưới tab Hosts- Extended.

Trong MAMP Pro v3.0.3, đây là giao diện: nhập mô tả hình ảnh ở đây


cảm ơn nó đã làm việc cho tôi
Ahmed_Ali

5

Có một cách khác để giải quyết vấn đề này. Giả sử bạn muốn truy cập thư mục "subphp" tồn tại /var/www/html/subphpvà bạn muốn truy cập thư mục đó bằng cách sử dụng 127.0.0.1/subphpvà bạn nhận được lỗi như thế này:

Bạn không có quyền truy cập / subphp / trên máy chủ này.

Sau đó thay đổi quyền thư mục từ "Không" thành "tệp truy cập". Người dùng dòng lệnh có thể sử dụng lệnh chmod để thay đổi quyền.


2
Có một nửa tùy chọn upvote?
Sahu V Kumar

3

Tôi có cùng một vấn đề, nhưng do thực tế là tôi đã thay đổi đường dẫn trên apache thành một thư mục bên ngoài var / www, tôi bắt đầu gặp vấn đề.

Tôi đã sửa nó bằng cách tạo một liên kết tượng trưng trong var / www / html> home / dev / project dường như thực hiện thủ thuật mà không phải thay đổi bất kỳ quyền nào ...


1
Cảm ơn bạn rất nhiều, bạn đã tiết kiệm cho tôi quá nhiều công việc khi biết điều này!
oscar.fimbres

3

Tôi sử dụng Mac OS X, trong trường hợp của tôi, tôi chỉ quên bật php trong apache, tất cả những gì tôi cần làm là bỏ ghi chú một dòng từ /etc/apache2/httpd.conf:

LoadModule php5_module libexec/apache2/libphp5.so

ref này bài viết để xem chi tiết.


2

(Trong Windows và Apache 2.2.x)

Lỗi "Cấm" cũng là kết quả của việc không xác định được máy chủ ảo.

Theo ghi nhận của Julien, nếu bạn có ý định sử dụng ảo hosts.conf, hãy truy cập tệp httpd và bỏ ghi chú dòng sau:

#Include conf/extra/httpd-vhosts.conf

Sau đó thêm định nghĩa máy chủ ảo của bạn vào conf/extra/httpd-vhosts.confvà khởi động lại Apache.


Bạn đúng rồi!!!!!!
Gank

2

Tôi gặp phải vấn đề này và giải pháp của tôi là moreso rằng dữ liệu www không sở hữu các thư mục phù hợp và thay vào đó tôi đặt nó cho một trong những người dùng sở hữu nó. (Tôi đã cố gắng làm một chút ưa thích, nhưng thủ thuật sai lầm để có được ftp để chơi độc đáo.)

Sau khi chạy:

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

Máy bắt đầu phục vụ dữ liệu một lần nữa. Bạn có thể xem ai hiện đang sở hữu thư mục bằng phương tiện

ls -l /var/www/html

2

Giải pháp này không cho phép từ tất cả

Tôi chỉ muốn thay đổi thư mục công cộng www của mình và truy cập nó từ PC và di động được kết nối bằng Wifi. Tôi đã có Ubuntu 16.04.

  1. Vì vậy, trước tiên, tôi đã sửa đổi /etc/apache2/sites-enables/000-default.conf và tôi đã thay đổi dòng DocumentRoot / var / www / html cho thư mục công cộng mới DocumentRoot "/ media / data / XAMPP / htdocs"

  2. Sau đó, tôi đã sửa đổi /etc/apache2/apache2.conf và tôi đặt quyền cho localhost và điện thoại di động của tôi, lần này tôi đã sử dụng địa chỉ IP, tôi biết nó không hoàn toàn an toàn, nhưng nó ổn cho mục đích của tôi.

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

1

Hãy thử điều này và không thêm bất cứ điều gì Order allow,denyvà những người khác:

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
    I changed 
    Order Deny,Allow
    Deny From All      in .htaccess to   " Require all denied "    and restarted apache but it did not help.

Đường dẫn cho apache2.conf trong ubfox là /etc/apache2/apache.conf

Sau đó, tôi đã thêm các dòng sau trong apache2.conf và sau đó thư mục của tôi hoạt động tốt

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

   and run  " Sudo service apache2 restart " 

1

Tôi biết câu hỏi này đã có một số câu trả lời, nhưng tôi nghĩ có một khía cạnh rất tinh tế, mặc dù được đề cập, đã không được làm nổi bật đủ trong các câu trả lời trước.

Trước khi kiểm tra cấu hình Apache hoặc quyền của tệp của bạn, hãy thực hiện kiểm tra đơn giản hơn để đảm bảo rằng mỗi thư mục tạo đường dẫn đầy đủ đến tệp bạn muốn truy cập (ví dụ: tệp index.php trong thư mục gốc của tài liệu của bạn) không chỉ người dùng máy chủ web có thể đọc được nhưng cũng có thể thực thi được.

Ví dụ: giả sử đường dẫn đến tài liệu gốc của bạn là "/ var / www / html". Bạn phải đảm bảo rằng tất cả các thư mục "var", "www" và "html" đều có thể được đọc bởi người dùng máy chủ web. Trong trường hợp của tôi (Ubuntu 16.04), tôi đã xóa nhầm cờ "x" sang nhóm "người khác" khỏi thư mục "html" để các quyền trông như thế này:

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

Như bạn có thể thấy người dùng máy chủ web (người mà quyền "người khác" áp dụng trong trường hợp này) đã không thực thi quyền truy cập vào thư mục "html" và đây chính xác là gốc rễ của vấn đề. Sau khi ban hành:

chmod o+x html

lệnh, vấn đề đã được sửa!

Trước khi giải quyết theo cách này, tôi đã thử mọi đề xuất khác trong chủ đề này và vì đề xuất đó được chôn vùi trong một nhận xét mà tôi thấy gần như tình cờ, tôi nghĩ có thể hữu ích để làm nổi bật và mở rộng về nó ở đây.


0

Tôi chỉ có cùng một vấn đề với một bộ điều khiển cụ thể - điều này thực sự kỳ lạ. Tôi đã có một thư mục trong thư mục gốc của thư mục CI có cùng tên với bộ điều khiển mà tôi đang cố truy cập ... Do đó, CI đã chuyển yêu cầu đến thư mục này thay vì chính bộ điều khiển.

Sau khi xóa thư mục này (có một chút do nhầm lẫn), tất cả đều hoạt động tốt.

Để rõ ràng hơn, đây là những gì nó trông giống như:

/ci/controller/register.php

/ci/register/

Tôi đã phải loại bỏ /ci/register/.


đôi khi codeigniter sử dụng các tập tin .htaccess để dừng truy cập trực tiếp. có một cái nhìn với ls -Al để đảm bảo không có tập tin ẩn.
pgee70

0

Kiểm tra chính xác nơi bạn đang đặt các tệp của mình, không lồng chúng vào thư mục Tài liệu.

Chẳng hạn, tôi đã phạm sai lầm khi đặt mã của mình vào thư mục Tài liệu như đã đề cập, điều này sẽ không hoạt động vì Tài liệu rõ ràng chỉ có sẵn cho BẠN chứ không phải APACHE. Hãy thử di chuyển nó lên một thư mục và bạn có thể không thấy vấn đề này.

Di chuyển thư mục từ:

/ Người dùng / YourUSERNAME / Tài liệu / mã

Tới đây: / Users / YOUUSERNAME / code


0

Chỉ để mang lại một đóng góp khác khi tôi chạy đến vấn đề này quá:

Tôi đã có một Virtualhost được cấu hình mà tôi không muốn. Tôi đã nhận xét dòng nơi bao gồm cho vhost xảy ra, và nó đã hoạt động.


0

Bạn có thể thay đổi youralias.conftập tin như mã này:

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

Hãy nhớ rằng tệp chính xác được định cấu hình trong tình huống này không phải là httpd.conf trong bí danh phpMyAdmin, mà là bin/apache/your_version/conf/httpd.conf.

Tìm dòng sau:

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>

Hãy chắc chắn rằng nó được đặt thành Allow from all...

Nếu không, phpMyAdmin thậm chí có thể hoạt động, nhưng không phải thư mục gốc và các thư mục khác của bạn. Ngoài ra, hãy nhớ khởi động lại WAMP và sau đó đưa trực tuyến ...

Điều này đã giải quyết cơn đau đầu của tôi.


Câu trả lời này là RẤT NHIỀU ! Bạn KHÔNG BAO GIỜ nên đặt Allow from allhoặc Require all grantedtrong <Directory />phần httpd.confThats chỉ là một tin tặc thích thú
RiggsFolly

0

Tôi gặp vấn đề này khi sử dụng SSHFS để gắn các tệp trong máy khách VirtualBox của mình từ hệ thống tệp cục bộ trước khi chạy bản dựng docker. Cuối cùng, "sửa chữa" là sao chép tất cả các tệp vào đối tượng VirtualBox thay vì xây dựng từ bên trong mount SSHFS, rồi chạy bản dựng từ đó.


0

Phương pháp làm việc (trừ khi không có vấn đề nào khác)

Theo mặc định, Apache không hạn chế quyền truy cập từ IPv4 (địa chỉ IP bên ngoài phổ biến)

Những gì bị hạn chế là các lệnh được đưa ra trong 'httpd.conf '.

Thay thế tất cả

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

với

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

do đó loại bỏ tất cả các hạn chế được đưa ra cho Apache .

Thay thế Require localbằng Require all grantedcho thư mục C: / wamp / www / .

<Directory "c:/wamp/www/">
    Options Indexes FollowSymLinks
    AllowOverride all
    Require all granted
    # Require local
</Directory>

Có thực sự là "<Directory />" (hai trường hợp)? Không phải là "<Directory>" sao?
Peter Mortensen

Người đầu tiên nhận được đường dẫn thư mục <Thư mục {/ path / to / your / dir}>
James

0

Sau khi thay đổi tập tin cấu hình đừng quên Restart All Services.

Tôi đã lãng phí ba giờ của tôi cho nó.


0

Điều này khá vô lý, nhưng tôi đã bị cấm 403 khi tệp tôi đang cố tải xuống không có trên hệ thống tệp. Lỗi apache không chính xác lắm trong trường hợp này và toàn bộ mọi thứ đã hoạt động sau khi tôi chỉ cần đặt tệp ở nơi đáng lẽ phải có.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.