client apache negato dalla configurazione del server dopo l'aggiornamento di mac OS X a Yosemite


12

So che sembra simile ad altre domande, ma Yosemite sembra aver cambiato qualcosa con la configurazione di Apache con l'aggiornamento. il mio log degli errori dice "client negato dalla configurazione del server: /Users/douglas/Sites/testpatient.php"

Versione Apache: MacBook-Pro: apache2 douglas $ apachectl -v Versione server: Apache / 2.4.9 (Unix) Server costruito: 9 set 2014 14:48:20 il mio file douglas.conf è 644 root / wheel e il seguente:

<Directory "/Users/douglas/Sites">
   Options Indexes Multiviews
   AllowOverride None
   Order allow,deny
   Allow from all
</Directory>

il mio http.conf ha il seguente:

# 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 _www
Group _www

</IfModule>

...

DocumentRoot "/Library/WebServer/Documents"

#
# 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
    Satisfy All
</Directory>

...

<Directory "/Library/WebServer/Documents">
#
# 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 MultiViews

#
# 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
AllowOverride All
#
# Controls who can get stuff from this server.
#
Order allow,deny
Allow from all
Satisfy All
</Directory>

Qualsiasi cosa sarebbe apprezzata. Ho provato a tornare al precedente file http.conf ma ci sono alcune differenze per quanto riguarda i moduli che devono essere caricati. È del tutto possibile che mi sia perso un modulo ma non ci sono lamentele nel registro.


Mentre la risposta di chrisMc è perfetta , i futuri stumbler potrebbero voler leggere l' installazione di Apache, PHP e MySQL su Mac OS X Yosemite .
Jason McCreary il

Risposte:


17

Nel tuo utente .conf (douglas.conf) sostituisci:

Order allow,deny
Allow from all

Con:

Require all granted

La differenza è come apache 2.4 gestisce le autorizzazioni

http://httpd.apache.org/docs/2.4/upgrading.html


Ho modificato le impostazioni in httpd.conf e douglas.conf ma ho ancora lo stesso errore
new2code

1
Non dimenticare di riavviare Apache
Thomas Edwards il

Questo è bello, anche se il vecchio Ordine / Consenti / Nega funzionano ancora se hai il access_compatmodulo acceso. Penso che sarebbe stato meglio per me ottenere errori e correggere le mie configurazioni invece di lasciarlo andare più a lungo con le vecchie configurazioni.
Alexis Wilke,

11

Ho avuto anche lo stesso problema e risolto in questo modo:

  1. Caricare il modulo userdir trovando le seguenti righe in httpd.conf e decommentandolo: LoadModule userdir_module libexec/apache2/mod_userdir.so Include /private/etc/apache2/extra/httpd-userdir.conf

  2. Modifica extra / httpd-userdir.conf , trova e decommenta la seguente riga: Include /private/etc/apache2/users/*.conf

  3. Modifica utenti / *. Conf , aggiungi Require locale aggiungi +(o -) carattere prima di tutte le opzioni nella riga delle opzioni, in questo modo: <Directory "/Users/user/Sites/"> Options +Indexes +MultiViews +FollowSymLinks +SymLinksIfOwnerMatch +ExecCGI AllowOverride All Require local Order allow,deny Allow from all </Directory>


1
Questo (esattamente questo, niente di più, niente di meno) ha funzionato per me, quando nient'altro ha funzionato. Grazie!
orome,

1

Ho provato la stessa cosa ma su Mavericks dopo aver applicato l'aggiornamento di sicurezza di un paio di giorni fa. Mavericks sta ancora usando Apache 2.2, quindi non è stato il problema di configurazione menzionato da chrisMc, anche se sembra che abbia ragione e anche tu dovrai cambiarlo.

Nel mio caso, ho prima risolto il problema principale commentando la riga del modulo Homebrew PHP 5.4 che avevo precedentemente aggiunto. Nel httpd.conf:

#LoadModule php5_module /usr/local/opt/php54/libexec/apache2/libphp5.so

E invece optando per il modulo PHP predefinito che avevo commentato prima:

LoadModule php5_module libexec/apache2/libphp5.so

Ciò è stato risolto, ma per quanto riguarda il motivo per cui la versione di Homebrew si è rotta, penso che forse una libreria di sistema per cui è stata compilata sia stata aggiornata nell'aggiornamento di sicurezza. Quando ho corso php -vho ricevuto un avviso su una icu4clibreria che non era stata caricata.

Quindi, ho appena ricompilato PHP e ha funzionato di nuovo. Nel mio caso, l'ho appena fatto

brew uninstall php54
brew install php54

Quindi il modulo Homebrew potrebbe essere nuovamente abilitato.


1

Dato che non ho mai usato l'homebrew ho finito per seguire questa guida. Installazione per lo sviluppo personale .

Ho visto che le autorizzazioni di cui parlava il primo poster erano parte del problema, ma ho ancora un problema di autorizzazioni con l'installazione personale utilizzando un file user.conf. Questa configurazione utilizzava host virtuali. Non ho idea di cosa abbia fatto l'homebrew che ha risolto il problema. Immagino che lo chiamerei un problema perché non ha risolto il mio problema originale, che è che non riesco ad accedere a nulla sul server Web utilizzando un file user.conf.


Eccezionale! La chiave per me era semplicemente commentare le righe 220-221 ( # AllowOverride nonee # Require all denied) che apparentemente erano state recentemente aggiunte in Yosemite.
MarkHu,

0

In httpd.confcommento:

LoadModule authz_core_module libexec/apache2/mod_authz_core.so 
LoadModule authz_host_module libexec/apache2/mod_authz_host.so 
LoadModule userdir_module libexec/apache2/mod_userdir.so 
Include /private/etc/apache2/extra/httpd-userdir.conf

E in /etc/apache2/extra/httpd-userdir.confcommento:

Include /private/etc/apache2/users/*.conf

Quindi riavviare Apache.


0

Le risposte sopra funzionano, su un'installazione di serie. In caso contrario, alcune cose che potrebbero aiutare:

  1. Sul tuo filesystem, la cartella deve essere esattamente Sites con la S maiuscola (il nome della cartella è hardcoded nel modulo userdir, non può essere diverso) Le sue autorizzazioni devono essere:

    drwxr-xr-x   2 username staff    68 29 mar 11:26 Sites
    
  2. La <Directory…>configurazione viene applicata sopra di essa, quindi deve corrispondere esattamente al nome della cartella, incluso il caso (veniamo da Linux ...).

    Autorizzazioni del /etc/apache2/users/username.conffile:

    -rw-r--r--  1 root  wheel  189 29 mar 11:42 username.conf
    

Quindi assicurati che la riga si <Directory "/Users/user/Sites/">riferisca esattamente alla cartella giusta con il nome utente giusto (con l'utente che corrisponda al nome del file di configurazione), case incluso e la Sitescartella esiste esattamente com'è, case case incluso.


0

Nel mio caso, apache versione 2.4.27.

Risolto il problema dopo aver cambiato il mio file httpd-vhosts.conf dalla directory " /etc/apache2/extra/httpd-vhosts.conf ".

A partire dal

<VirtualHost *:80>
    ServerName inventory.loc
    ServerAlias www.inventory.loc
    DocumentRoot "/Users/Vagabond/Sites/inventory/public/"
    ErrorLog "/Users/Vagabond/Sites/logs/inventory.loc-error_log"
    CustomLog "/Users/Vagabond/Sites/logs/inventory.loc-access_log"
</VirtualHost>

Per,

<VirtualHost *:80>
    ServerName inventory.loc
    ServerAlias www.inventory.loc
    DocumentRoot "/Users/Vagabond/Sites/inventory/public/"
    <Directory /Users/Vagabond/Sites/inventory/public/>
        Require all granted
        Options Includes FollowSymLinks
    </Directory>
    ErrorLog "/Users/Vagabond/Sites/logs/inventory.loc-error_log"
    CustomLog "/Users/Vagabond/Sites/logs/inventory.loc-access_log"
</VirtualHost>
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.