klient Apache odmówiony przez konfigurację serwera po aktualizacji Mac OS X do Yosemite

12

Wiem, że wygląda to podobnie do innych pytań, ale wydaje się, że Yosemite zmieniło coś w konfiguracji apache z aktualizacją. mój dziennik błędów mówi „klient odmówiony przez konfigurację serwera: /Users/douglas/Sites/testpatient.php”

Wersja Apache: MacBook-Pro: apache2 douglas $ apachectl -v Wersja serwera: Apache / 2.4.9 (Unix) Zbudowany serwer: 9 września 2014 14:48:20 mój plik douglas.conf to 644 root / koło i następujące:

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

mój http.conf ma następujące elementy:

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

Wszystko będzie mile widziane. Próbowałem przywrócić poprzedni plik http.conf, ale istnieje wiele różnic dotyczących modułów, które należy załadować. Całkiem możliwe, że przegapiłem moduł, ale w dzienniku nie ma żadnych skarg.

new2code
źródło
Chociaż odpowiedź chrisMc jest natychmiastowa, przyszli natknąć się mogą również na instalowanie Apache, PHP i MySQL na Mac OS X Yosemite .
Jason McCreary,

Odpowiedzi:

17

W twoim pliku .conf (douglas.conf) zamień:

Order allow,deny
Allow from all

Z:

Require all granted

Różnica polega na tym, jak Apache 2.4 obsługuje uprawnienia

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

chrisMc
źródło
Zmieniłem ustawienia w httpd.conf i douglas.conf, ale nadal
pojawia
1
Nie zapomnij ponownie uruchomić Apache
Thomas Edwards
To jest fajne, chociaż stare zamówienie / Zezwól / Odmów nadal działa, jeśli access_compatmoduł jest włączony. Wydaje mi się, że lepiej byłoby dla mnie, aby uzyskać błędy i naprawić moje konfiguracje, niż pozwolić na dłuższą pracę ze starymi konfiguracjami.
Alexis Wilke
11

Miałem również ten sam problem i naprawiłem go w ten sposób:

  1. Załaduj moduł userdir, znajdując następujące wiersze w httpd.conf i usuwając komentarz: LoadModule userdir_module libexec/apache2/mod_userdir.so Include /private/etc/apache2/extra/httpd-userdir.conf

  2. Edytuj plik extra / httpd-userdir.conf , znajdź i odkomentuj następujący wiersz: Include /private/etc/apache2/users/*.conf

  3. Edytuj użytkowników / *. Conf , dodaj Require locali dodaj +(lub -) znak przed wszystkimi opcjami w wierszu opcji, tak jak: <Directory "/Users/user/Sites/"> Options +Indexes +MultiViews +FollowSymLinks +SymLinksIfOwnerMatch +ExecCGI AllowOverride All Require local Order allow,deny Allow from all </Directory>

s4nji
źródło
1
To (dokładnie to, nic więcej, nic mniej) działało dla mnie, kiedy nic innego nie działało. Dzięki!
orome
1

Doświadczyłem tego samego, ale na Mavericks po zastosowaniu aktualizacji zabezpieczeń sprzed kilku dni. Mavericks nadal używa Apache 2.2, więc nie wspomniano o problemie z konfiguracją, o którym wspomniał chrisMc, choć wygląda na to, że ma rację i ty też musisz to zmienić.

W moim przypadku najpierw rozwiązałem podstawowy problem, komentując linię modułu Homebrew PHP 5.4, którą wcześniej dodałem. W httpd.conf:

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

Zamiast tego wybrałem domyślny moduł PHP, który wcześniej skomentowałem:

LoadModule php5_module libexec/apache2/libphp5.so

To naprawiło, ale jeśli chodzi o przyczynę awarii wersji Homebrew , myślę, że może biblioteka systemowa, z którą została skompilowana, została zaktualizowana w aktualizacji zabezpieczeń. Kiedy prowadziłem php -v, dostałem ostrzeżenie o icu4cbibliotece, która nie została załadowana.

Właśnie skompilowałem PHP i znów zadziałało. W moim przypadku właśnie to zrobiłem

brew uninstall php54
brew install php54

Następnie moduł Homebrew można ponownie włączyć.

toddabrahm
źródło
1

Ponieważ nigdy nie korzystałem z homebrew, skończyłem z tym przewodnikiem. Konfiguracja do rozwoju osobistego .

Widziałem, że uprawnienia, o których mówił pierwszy plakat, są częścią problemu, ale nadal mam problem z uprawnieniami w osobistej konfiguracji przy użyciu pliku user.conf. Ta konfiguracja korzystała z wirtualnych hostów. Nie mam pojęcia, co zrobił homebrew, co rozwiązało problem. Myślę, że nazwałbym to obejściem, ponieważ nie rozwiązało to mojego pierwotnego problemu, a mianowicie, że nie mogę uzyskać dostępu do niczego na serwerze sieciowym przy użyciu pliku user.conf.

new2code
źródło
Niesamowite! Kluczem było dla mnie po prostu komentowanie linii 220-221 ( # AllowOverride nonei # Require all denied), które najwyraźniej zostały niedawno dodane w Yosemite.
MarkHu
0

W httpd.confOdkomentuj:

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

I bez /etc/apache2/extra/httpd-userdir.confkomentarza:

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

Następnie uruchom ponownie Apache.

chrisMc
źródło
0

Powyższe odpowiedzi działają w przypadku instalacji standardowej. Jeśli nie, kilka rzeczy, które mogą pomóc:

  1. W twoim systemie plików folder musi być dokładnie Witryny z wielką literą S (nazwa folderu jest zapisana na stałe w module userdir, nie może być inna). Jego uprawnienia muszą być następujące:

    drwxr-xr-x   2 username staff    68 29 mar 11:26 Sites
    
  2. <Directory…>Konfiguracja jest stosowana na wierzchu, więc to musi być zgodna z nazwą folderu dokładnie, w tym przypadku (idziemy z Linux ...).

    Uprawnienia do /etc/apache2/users/username.confpliku:

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

Upewnij się więc, że wiersz <Directory "/Users/user/Sites/">odnosi się dokładnie do właściwego folderu z właściwą nazwą użytkownika (z użytkownikiem pasującym do nazwy pliku konfiguracyjnego), dołączoną sprawą, a Sitesfolder istnieje dokładnie tak, jak jest, dołączona wielkość liter.

Brunni
źródło
0

W moim przypadku apache wersja 2.4.27.

Problem rozwiązany po zmianie mojego httpd-vhosts.conf plik z „ /etc/apache2/extra/httpd-vhosts.conf ” katalogu.

Od

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

Do,

<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>
sh6210
źródło