Messaggio di errore “Proibito Non hai il permesso di accedere / su questo server”

Ho configurato il mio Apache da solo e ho provato a caricare phpMyAdmin su un host virtuale, ma ho ricevuto:

403 Proibito Non si dispone dell’authorization per accedere / su questo server

Il mio httpd.conf

# # This is the main Apache HTTP server configuration file. It contains the # configuration directives that give the server its instructions. # See  for detailed information. # In particular, see #  # 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 (eg, "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  # directive. # # Change this to Listen on specific IP addresses as shown below to # prevent Apache from glomming onto all bound IP addresses. # #Listen Listen 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/ # LoadModule actions_module modules/ LoadModule alias_module modules/ LoadModule asis_module modules/ LoadModule auth_basic_module modules/ #LoadModule auth_digest_module modules/ #LoadModule authn_alias_module modules/ #LoadModule authn_anon_module modules/ #LoadModule authn_dbd_module modules/ #LoadModule authn_dbm_module modules/ LoadModule authn_default_module modules/ LoadModule authn_file_module modules/ #LoadModule authnz_ldap_module modules/ #LoadModule authz_dbm_module modules/ LoadModule authz_default_module modules/ LoadModule authz_groupfile_module modules/ LoadModule authz_host_module modules/ #LoadModule authz_owner_module modules/ LoadModule authz_user_module modules/ LoadModule autoindex_module modules/ #LoadModule cache_module modules/ #LoadModule cern_meta_module modules/ LoadModule cgi_module modules/ #LoadModule charset_lite_module modules/ #LoadModule dav_module modules/ #LoadModule dav_fs_module modules/ #LoadModule dav_lock_module modules/ #LoadModule dbd_module modules/ #LoadModule deflate_module modules/ LoadModule dir_module modules/ #LoadModule disk_cache_module modules/ #LoadModule dumpio_module modules/ LoadModule env_module modules/ #LoadModule expires_module modules/ #LoadModule ext_filter_module modules/ #LoadModule file_cache_module modules/ #LoadModule filter_module modules/ #LoadModule headers_module modules/ #LoadModule ident_module modules/ #LoadModule imagemap_module modules/ LoadModule include_module modules/ #LoadModule info_module modules/ LoadModule isapi_module modules/ #LoadModule ldap_module modules/ #LoadModule logio_module modules/ LoadModule log_config_module modules/ #LoadModule log_forensic_module modules/ #LoadModule mem_cache_module modules/ LoadModule mime_module modules/ #LoadModule mime_magic_module modules/ LoadModule negotiation_module modules/ #LoadModule proxy_module modules/ #LoadModule proxy_ajp_module modules/ #LoadModule proxy_balancer_module modules/ #LoadModule proxy_connect_module modules/ #LoadModule proxy_ftp_module modules/ #LoadModule proxy_http_module modules/ #LoadModule proxy_scgi_module modules/ #LoadModule reqtimeout_module modules/ #LoadModule rewrite_module modules/ LoadModule setenvif_module modules/ #LoadModule speling_module modules/ #LoadModule ssl_module modules/ #LoadModule status_module modules/ #LoadModule substitute_module modules/ #LoadModule unique_id_module modules/ #LoadModule userdir_module modules/ #LoadModule usertrack_module modules/ #LoadModule version_module modules/ #LoadModule vhost_alias_module modules/ LoadModule php5_module "c:/Program Files/php/php5apache2_2.dll"   # # 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   # '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 #  definition. These values also provide defaults for # any  containers you may define later in the file. # # All of these directives may appear inside  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. eg [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 # # 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. #  Options FollowSymLinks AllowOverride None Order deny,allow Deny from all  # # 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. #  # # 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 # # 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  # # DirectoryIndex: sets the file that Apache will serve if a directory # is requested. #  DirectoryIndex index.html index.php  # # The following lines prevent .htaccess and .htpasswd files from being # viewed by Web clients. #  Order allow,deny Deny from all Satisfy All  # # ErrorLog: The location of the error log file. # If you do not specify an ErrorLog directive within a  # container, error messages relating to that virtual host will be # logged here. If you *do* define an error logfile for a  # 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  # # 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  # 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  # # The location and format of the access logfile (Common Logfile Format). # If you do not define any access logfiles within a  # container, they will be logged here. Contrariwise, if you *do* # define per- 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   # # 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 # # 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  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/"   # # ScriptSock: On threaded servers, designate the path to the UNIX # socket used to communicate with the CGI daemon of mod_cgid. # #Scriptsock logs/cgisock  # # "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. #  AllowOverride None Options None Order allow,deny Allow from all  # # 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  # # 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  # # 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/" #ErrorDocument 402 # # # 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. #  SSLRandomSeed startup builtin SSLRandomSeed connect builtin  PHPIniDir "c:/Program Files/php" 

e vhosts.conf:

 NameVirtualHost  DocumentRoot i:/projects/webserver/__tools/phpmyadmin/ ServerName  

    Aggiornamento ottobre 2016

    4 anni fa, dal momento che questa risposta è usata come riferimento da molti, e mentre ho imparato molto dal punto di vista della sicurezza durante questi anni, sento di essere responsabile di chiarire alcune note importanti e ho aggiornato la mia risposta di conseguenza.

    La risposta originale è corretta ma non sicura per alcuni ambienti di produzione, inoltre vorrei spiegare alcuni problemi che potresti incontrare durante la configurazione del tuo ambiente.

    Se stai cercando una soluzione rapida e SICUREZZA NON È UNA QUESTIONE, vale a dire lo sviluppo env, salta e leggi la risposta originale

    Molti scenari possono portare a 403 Proibiti :

    A. Indici di directory (da mod_autoindex.c )

    Quando si accede a una directory e non vi è alcun file predefinito trovato in questa directory E gli Options Indexes Apache non sono abilitati per questa directory.

    A.1. Esempio di opzione DirectoryIndex

    DirectoryIndex index.html default.php welcome.php

    A.2. Options Indexes

    Se impostato, apache elencherà il contenuto della directory se non viene trovato alcun file predefinito (dall’opzione 👆🏻 sopra)

    Se nessuna delle condizioni di cui sopra è soddisfatta

    Riceverai un 403 Proibito


    • Non dovresti consentire l’elenco delle directory, a meno che non sia VERAMENTE necessario.
    • Limita l’indice predefinito DirectoryIndex al minimo.
    • Se si desidera modificare, limitare SOLO la modifica alla directory necessaria, ad esempio utilizzare i file .htaccess o inserire la modifica nella

    B. deny,allow direttive (Apache 2.2)

    Menzionato da @Radu, @Simon A. Eugster nei commenti richiesti dall’utente è negato, inserito nella lista nera o nella whitelist di tali direttive.

    Non posterò una spiegazione completa, ma penso che alcuni esempi possano aiutarti a capire, in breve, ricorda questa regola:


    Order allow,deny

    Deny vincerà se abbinato a entrambe le direttive (anche se una direttiva allow viene scritta dopo il deny nel conf)

    Order deny,allow

    consentire vincerà se abbinato da entrambe le direttive

    Esempio 1

     Order allow,deny Allow from localhost 

    Solo localhost e * possono accedere a questo, tutti gli altri host sono negati

    Esempio 2

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

    Tutte le richieste sono negate, l'ultima riga potrebbe ingannarti, ma ricorda che se è uguale all'ultima regola di vittoria (qui Deny è l'ultima), come scritto:

     Order allow,deny Allow from Deny from # <-- will override the previous one 

    Esempio 4

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

    Le richieste sono accettate da tutti gli host

    Esempio 4: tipico per siti pubblici (consenti se non nella lista nera)

     Order allow,deny Allow from all Deny from Deny from 

    Esempio 5: tipico per siti intranet e sicuri (nega a meno della whitelist)

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

    C. Require direttiva (Apache 2.4)

    Apache 2.4 usa un nuovo modulo chiamato mod_authz_host

    Require all granted => Consenti tutte le richieste

    Require all denied => Rifiuta tutte le richieste

    Require host => Sono consentiti solo da

    D. Autorizzazioni file

    Una cosa che molte persone sbagliano è la configurazione dei permessi dei file,



    In linux:

    • Le directory dovrebbero avere il permesso Execute

    • I file dovrebbero avere l'authorization di Read

    • Sì, hai ragione NON AGGIUNGI l'authorization di Execute per i file

    per esempio, io uso questo script per impostare le autorizzazioni delle cartelle

     # setting permissions for /var/www/ # read permission ONLY for the owner chmod -R /var/www/ 400 # add execute for folders only find /var/www/ -type d -exec chmod -R u+x {} \; # allow file uploads chmod -R /var/www/ u+w # allow log writing to this folder chmod -R /var/www/ 

    Ho inserito questo codice come esempio, l'installazione può variare in altre situazioni

    Risposta originale

    Ho affrontato lo stesso problema, ma l'ho risolto impostando la direttiva options nell'impostazione della directory globale in httpd.conf o nel blocco di directory specifico in httpd-vhosts.conf :

     Options Indexes FollowSymLinks Includes ExecCGI 

    Per impostazione predefinita, le impostazioni della directory globale sono (httpd.conf line ~188) :

      Options FollowSymLinks AllowOverride All Order deny,allow Allow from all  

    impostare le opzioni su: Options Indexes FollowSymLinks Includes ExecCGI

    Infine, dovrebbe assomigliare a:

      #Options FollowSymLinks Options Indexes FollowSymLinks Includes ExecCGI AllowOverride All Order deny,allow Allow from all  

    Prova anche a cambiare Order deny,allow e Allow from all righe per Require all granted .


    Directory Indica il codice sorgente (alcuni codici rimossi per brevità)

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

    Capisco che questo problema è stato risolto, ma mi è capitato di risolvere questo stesso problema da solo.

    La causa di

    Proibito Non si dispone dell’authorization per accedere / su questo server

    è in realtà la configurazione predefinita per una directory apache 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. #  Options FollowSymLinks AllowOverride None Order deny,allow Deny from all # the cause of permission denied  

    Cambiare semplicemente Deny from all a Allow from all dovrebbe risolvere il problema dei permessi.

    In alternativa, un approccio migliore sarebbe specificare le autorizzazioni di directory individuali sulla configurazione di virtualhost.

      .... # Set access permission  Allow from all  ....  

    A partire da Apache-2.4 , tuttavia, il controllo degli accessi viene eseguito utilizzando il nuovo modulo mod_authz_host ( Upgrade a 2.4 da 2.2 ). Di conseguenza, dovrebbe essere utilizzata la nuova direttiva Require .

      .... # Set access permission  Require all granted  ....  

    Un comune trucco per le directory ospitate al di fuori del default / var / www / è che l’utente Apache non ha solo bisogno di autorizzazioni per la directory e le sottodirectory dove è ospitato il sito. Apache richiede le autorizzazioni a tutte le directory fino alla radice del file system in cui è ospitato il sito. Apache ottiene automaticamente le autorizzazioni assegnate a / var / www / quando viene installato, quindi se la directory host è direttamente sotto quella non si applica a te. Modifica: Daybreaker ha segnalato che il suo Apache è stato installato senza autorizzazioni di accesso corrette alla directory predefinita.

    Ad esempio, hai una macchina di sviluppo e la directory del tuo sito è:


    Potresti pensare di poter farcela con:

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

    perché questo dà le autorizzazioni Apache per accedere alla directory del tuo sito? Beh, è ​​corretto, ma non è sufficiente. Apache richiede i permessi per tutto l’albero delle directory, quindi quello che devi fare è:

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

    Ovviamente non consiglierei di dare accesso ad Apache su un server di produzione a una struttura di directory completa senza analizzare cosa c’è in quella struttura di directory. Per la produzione è meglio mantenere la directory predefinita o un’altra struttura di directory che è solo per contenere risorse web.

    Edit2: come tu / chimeraha ha sottolineato, se non sei sicuro di quello che stai facendo con i permessi, sarebbe meglio spostare la directory del tuo sito fuori dalla tua home directory per evitare di bloccarti dalla tua home directory.

    Alcuni parametri di configurazione sono cambiati in Apache 2.4. Ho avuto un problema simile durante la configurazione di un’applicazione Zend Framework 2 . Dopo alcune ricerche, ecco la soluzione:

    Configurazione errata

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

    Configurazione corretta

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

    Se hai intenzione di migrare da Apache 2.2 a 2.4, ecco un buon riferimento:

    Con Apache 2.2

     Order Deny,Allow Allow from all 

    Con Apache 2.4

     Require all granted 


    Su Ubuntu 14.04 usando Apache 2.4 , ho fatto quanto segue:

    Aggiungi quanto segue nel file, apache2.conf (in /etc/apache2 ):

      Options Indexes FollowSymLinks AllowOverride None Require all granted  

    e ricarica il server:

     sudo service apache2 reload 

    Modifica: funziona anche su OS X Yosemite con Apache 2.4. La linea fondamentale è

    Richiedi tutto garantito

    Se stai utilizzando un server WAMP , prova questo:

    • Un singolo clic sull’icona del server WAMP sulla barra delle applicazioni

    • Seleziona l’opzione messa online

    • Il tuo server si riavvierà automaticamente

    • Quindi prova ad accedere al tuo sito web locale

    Ho risolto il mio problema aggiungendo il mio utente a 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 

    Questo articolo Creazione di host virtuali su Apache 2.2 mi aiuta (punto 9) le autorizzazioni per la directory degli host virtuali superiore.

    Semplicemente aggiungo queste righe al mio file vhosts.conf:

      Order Deny,Allow Allow from all  

    Se stai usando CentOS con SELinux Prova:

     sudo restorecon -r /var/www/html 

    Vedi di più:

    Stavo ottenendo lo stesso errore e non riuscivo a capire il problema da secoli. Se ti trovi su una distribuzione Linux che include SELinux come CentOS , devi assicurarti che le autorizzazioni di SELinux siano impostate correttamente per i tuoi file root di documenti o otterrai questo errore. Questo è un insieme completamente diverso di permessi per le autorizzazioni standard del file system.

    Mi è capitato di usare il tutorial Apache e SELinux , ma sembra che ci sia molto da fare una volta che sai cosa cercare.

    Se si utilizza MAMP Pro, il modo per risolvere il problema è spuntando la casella di controllo Indexes sotto la scheda HostsExtended .

    In MAMP Pro v3.0.3 questo è ciò che assomiglia a: inserisci la descrizione dell'immagine qui

    C’è un altro modo per risolvere questo problema. Diciamo che vuoi accedere alla directory “subphp” che esiste in /var/www/html/subphp , e vuoi accedervi usando e ricevi un errore come questo:

    Non hai il permesso di accedere / subphp / su questo server.

    Quindi modificare le autorizzazioni della directory da “Nessuna” a “accedere ai file”. Un utente della riga di comando può utilizzare il comando chmod per modificare l’authorization.

    Uso Mac OS X, nel mio caso, mi dimentico di abilitare php in apache, tutto quello che devo fare è decommentare una riga da /etc/apache2/httpd.conf :

     LoadModule php5_module libexec/apache2/ 

    ref questo articolo per i dettagli.

    (In Windows e Apache 2.2.x)

    L’errore “Proibito” è anche il risultato del non aver definito host virtuali.

    Come notato da Julien, se si intende utilizzare hosts.conf virtuale, andare al file httpd e rimuovere il commento dalla seguente riga:

     #Include conf/extra/httpd-vhosts.conf 

    Quindi aggiungi le definizioni degli host virtuali in conf/extra/httpd-vhosts.conf e riavvia Apache.

    Ho avuto lo stesso problema, ma a causa del fatto che ho cambiato il percorso su apache in una cartella esterna a var / www, ho iniziato a imbattersi in problemi.

    L’ho risolto creando un collegamento simbolico in var / www / html> home / dev / project che sembrava fare il trucco, senza dover modificare alcun permesso …

    Mi sono imbattuto in questo problema, e la mia soluzione è stata più che soddisfacente il fatto che www-data non possedesse le cartelle appropriate, e invece l’ho impostato affinché fosse uno degli utenti a possederlo. (Stavo cercando di fare un po ‘di fantasia, ma trucchi errati per far sì che ftp suonasse bene.)

    Dopo aver eseguito:

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

    La macchina ha iniziato a servire di nuovo i dati. Puoi vedere chi possiede la cartella per mezzo di

     ls -l /var/www/html 

    Questa soluzione non consente da tutti

    Voglio solo cambiare la mia directory pubblica www, e accedervi dal mio PC, e il cellulare connesso tramite Wifi. Ho Ubuntu 16.04.

    1. Per prima cosa ho modificato /etc/apache2/sites-enabled/000-default.conf e ho modificato la riga DocumentRoot / var / www / html per la mia nuova directory pubblica DocumentRoot “/ media / data / XAMPP / htdocs”

    2. Poi ho modificato /etc/apache2/apache2.conf, e ho inserito le autorizzazioni per localhost e il mio cellulare, questa volta ho usato l’indirizzo IP, so che non è completamente sicuro, ma va bene per i miei scopi.

        Options FollowSymLinks AllowOverride None Order deny,allow Deny from all Allow from localhost  
      I changed Order Deny,Allow Deny From All in .htaccess to " Require all denied " and restarted apache but it did not help. 

    Il percorso per apache2.conf in ubuntu è /etc/apache2/apache.conf

    Poi ho aggiunto le righe seguenti in apache2.conf e quindi la mia cartella funziona correttamente

       Options Indexes FollowSymLinks AllowOverride All Require all granted  and run " Sudo service apache2 restart " 

    Ho avuto lo stesso problema solo per un controller specifico, il che era davvero strano. Avevo una cartella nella cartella principale della cartella CI con lo stesso nome del controller a cui stavo tentando di accedere … Per questo motivo, CI stava indirizzando la richiesta a questa directory anziché al controller stesso.

    Dopo aver rimosso questa cartella (che era un po ‘per errore), tutto ha funzionato bene.

    Per essere più chiari, ecco come appariva:

     /ci/controller/register.php /ci/register/ 

    Ho dovuto rimuovere /ci/register/ .

    Controlla esattamente dove stai mettendo i tuoi file, non annidarli nella cartella Documenti.

    Ad esempio, ho commesso l’errore di inserire il mio codice nella cartella Documenti di cui ho detto che non funzionerà perché i documenti sono esplicitamente disponibili solo per te e non per APACHE. Prova a spostarlo su una directory e potresti non vedere questo problema.

    Sposta cartella da:

    / Users / VOSTRONOMEUTENTE / Documents / code

    A qui: / Users / YOURUSERNAME / code

    Solo per portare un altro contributo mentre corro a questo problema:

    Avevo un VirtualHost configurato che non volevo. Ho commentato la linea in cui è avvenuta l’inclusione per il vhost, e ha funzionato.

    Puoi cambiare il youralias.conf file youralias.conf come questo codice:

     Alias /Quiz/ "h:/MyServer/Quiz/"  Options Indexes FollowSymLinks AllowOverride all  Require local   Order Deny,Allow Deny from all Allow from localhost ::1   

    Ricorda che il file corretto da configurare in questa situazione non è il httpd.conf bin/apache/your_version/conf/httpd.conf phpMyAdmin, ma in bin/apache/your_version/conf/httpd.conf .

    Cerca la seguente riga:

     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. #  Options FollowSymLinks AllowOverride None Order deny,allow Allow from all  

    Assicurati che sia impostato su Allow from all

    In caso contrario, phpMyAdmin potrebbe funzionare anche, ma non la tua root e le altre cartelle sottostanti. Inoltre, ricorda di riavviare WAMP e poi mette online …

    Questo ha risolto il mio mal di testa.

    Ho riscontrato questo problema quando utilizzo SSHFS per montare i file nel mio guest VirtualBox dal mio filesystem locale prima di eseguire una build docker. Alla fine, la “correzione” consisteva nel copiare tutti i file nell’istanza di VirtualBox anziché build dall’interno del mount SSHFS e quindi eseguire la build da lì.

    Metodo di LAVORO (a meno che non ci siano altri problemi)

    Per impostazione predefinita, Apache non limita l’accesso da IPv4 (indirizzo IP esterno comune)

    Ciò che è limitato sono i comandi dati in ‘ httpd.conf ‘.

    Sostituisci tutto

      AllowOverride none Require all denied  


      AllowOverride none # Require all denied  

    quindi rimuovendo tutte le restrizioni fornite ad Apache .

    Sostituisci Require local con Require all granted per la directory C: / wamp / www / .

      Options Indexes FollowSymLinks AllowOverride all Require all granted # Require local  

    Prova questo e non aggiungere nulla Order allow,deny e altri:

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

     sudo a2enmod cgi sudo service apache2 restart 

    Dopo aver modificato i file di configurazione, non dimenticare di Restart All Services .

    Ho sprecato tre ore del mio tempo.

    Questo è abbastanza ridicolo, ma ho ottenuto il 403 Proibito quando il file che stavo cercando di scaricare non era lì sul filesystem. L’errore di apache non è molto accurato in questo caso, e l’intera cosa ha funzionato dopo aver semplicemente messo il file dove doveva essere.

    Avevamo il modsec abilitato, controlla il log degli errori del sito per un ID modsec, quindi inserisci un locationmatch per il file nel vhost (o .htaccess immagino):

        SecRuleRemoveById XXXXXXX