Apache-Client durch Serverkonfiguration nach dem Upgrade von Mac OS X auf Yosemite verweigert

12

Ich weiß, dass dies anderen Fragen ähnlich sieht, aber Yosemite scheint mit dem Upgrade etwas an der Apache-Konfiguration geändert zu haben. In meinem Fehlerprotokoll steht "Client von Serverkonfiguration abgelehnt: /Users/douglas/Sites/testpatient.php"

Apache-Version: MacBook-Pro: apache2 douglas $ apachectl -v Serverversion: Apache / 2.4.9 (Unix) Server erstellt: 9. September 2014 14:48:20 Meine Datei douglas.conf ist 644 root / radius und die folgenden:

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

Meine http.conf hat folgendes:

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

Alles wäre dankbar. Ich habe versucht, auf die vorherige http.conf-Datei zurückzugreifen, aber es gibt eine Reihe von Unterschieden hinsichtlich der Module, die geladen werden müssen. Es ist durchaus möglich, dass ich ein Modul verpasst habe, aber es gibt keine Beschwerde im Protokoll.

new2code
quelle
Während die Antwort von chrisMc genau richtig ist, möchten zukünftige Stolperer möglicherweise auch die Installation von Apache, PHP und MySQL unter Mac OS X Yosemite lesen .
Jason McCreary

Antworten:

17

In Ihrem Benutzer .conf (douglas.conf) ersetzen Sie:

Order allow,deny
Allow from all

Mit:

Require all granted

Der Unterschied besteht darin, wie Apache 2.4 mit Berechtigungen umgeht

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

chrisMc
quelle
Ich habe die Einstellungen in httpd.conf und douglas.conf geändert, aber ich erhalte immer noch den gleichen Fehler
new2code
1
Vergessen Sie nicht, Apache
Thomas Edwards
Das ist cool, obwohl die alten Befehle / Zulassen / Verweigern noch funktionieren, wenn Sie das access_compatModul eingeschaltet haben. Ich denke, es wäre besser für mich gewesen, Fehler zu bekommen und meine Setups zu reparieren, als es mit den alten Konfigurationen länger laufen zu lassen.
Alexis Wilke
11

Ich hatte auch das gleiche Problem und habe es dadurch behoben:

  1. Laden Sie das userdir-Modul, indem Sie die folgenden Zeilen in httpd.conf suchen und auskommentieren : LoadModule userdir_module libexec/apache2/mod_userdir.so Include /private/etc/apache2/extra/httpd-userdir.conf

  2. Bearbeiten Sie extra / httpd-userdir.conf , suchen und kommentieren Sie die folgende Zeile: Include /private/etc/apache2/users/*.conf

  3. Bearbeiten Sie Benutzer / *. Conf , fügen Sie vor allen Optionen in der Optionszeile Zeichen hinzu Require localoder fügen Sie +(oder -) hinzu, wie folgt: <Directory "/Users/user/Sites/"> Options +Indexes +MultiViews +FollowSymLinks +SymLinksIfOwnerMatch +ExecCGI AllowOverride All Require local Order allow,deny Allow from all </Directory>

s4nji
quelle
1
Dies (genau das, nicht mehr und nicht weniger) hat bei mir funktioniert, als nichts anderes. Vielen Dank!
Orome
1

Ich habe das Gleiche erlebt, aber bei Mavericks, nachdem ich das Sicherheitsupdate von vor ein paar Tagen angewendet hatte. Mavericks verwendet immer noch Apache 2.2, daher wurde das Konfigurationsproblem von chrisMc nicht erwähnt, obwohl es so aussieht, als ob er Recht hat, und Sie müssen dies ebenfalls ändern.

In meinem Fall habe ich zuerst das Kernproblem gelöst, indem ich die zuvor hinzugefügte Homebrew PHP 5.4-Modulzeile auskommentiert habe. In der httpd.conf:

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

Und stattdessen entscheiden Sie sich für das Standard-PHP-Modul, das ich zuvor auskommentiert hatte:

LoadModule php5_module libexec/apache2/libphp5.so

Das hat es behoben, aber was den Grund betrifft , warum die Homebrew- Version kaputt gegangen ist , denke ich, dass möglicherweise eine Systembibliothek, gegen die sie kompiliert wurde, im Sicherheitsupdate aktualisiert wurde. Als ich lief, php -vbekam ich eine Warnung über eine icu4cBibliothek, die nicht geladen war.

Also habe ich gerade PHP neu kompiliert und es hat wieder funktioniert. In meinem Fall habe ich es einfach getan

brew uninstall php54
brew install php54

Dann könnte das Homebrew-Modul wieder aktiviert werden.

toddabrahm
quelle
1

Da ich noch nie Homebrew verwendet habe, bin ich dieser Anleitung gefolgt. Setup für die persönliche Entwicklung .

Ich habe gesehen, dass die Berechtigungen, über die im ersten Poster gesprochen wurde, Teil des Problems sind, aber ich habe immer noch ein Berechtigungsproblem bei der persönlichen Einrichtung mithilfe einer user.conf-Datei. Dieses Setup verwendete virtuelle Hosts. Ich habe keine Ahnung, was Homebrew getan hat, um das Problem zu lösen. Ich denke, ich würde dies eine Problemumgehung nennen, da mein ursprüngliches Problem dadurch nicht behoben wurde. Ich kann mit einer user.conf-Datei auf nichts auf dem Webserver zugreifen.

new2code
quelle
Genial! Der Schlüssel für mich war einfach das Auskommentieren der Zeilen 220-221 ( # AllowOverride noneund # Require all denied), die anscheinend in Yosemite neu hinzugefügt wurden.
MarkHu
0

In httpd.confKommentar:

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

Und /etc/apache2/extra/httpd-userdir.confunkommentiert:

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

Starten Sie dann Apache neu.

chrisMc
quelle
0

Die obigen Antworten funktionieren bei einer Standardinstallation. Wenn nicht, ein paar Dinge, die helfen könnten:

  1. In Ihrem Dateisystem muss der Ordner genau Sites mit einem Großbuchstaben S sein (der Ordnername ist im userdir-Modul fest codiert, er kann nicht anders sein). Seine Berechtigungen müssen sein:

    drwxr-xr-x   2 username staff    68 29 mar 11:26 Sites
    
  2. Die <Directory…>Konfiguration wird darüber hinaus angewendet, daher muss sie genau mit dem Ordnernamen übereinstimmen, einschließlich des Falls (wir kommen von Linux…).

    Berechtigungen der /etc/apache2/users/username.confDatei:

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

Stellen Sie daher sicher, dass die Zeile <Directory "/Users/user/Sites/">genau auf den richtigen Ordner mit dem richtigen Benutzernamen verweist (wobei der Benutzer mit dem Namen der Konfigurationsdatei übereinstimmt), einschließlich Groß- und Kleinschreibung, und dass der SitesOrdner genau so vorhanden ist, wie er ist, einschließlich Groß- und Kleinschreibung.

Brunni
quelle
0

In meinem Fall Apache Version 2.4.27.

Problem behoben, nachdem meine Datei httpd-vhosts.conf aus dem Verzeichnis " /etc/apache2/extra/httpd-vhosts.conf " geändert wurde .

Von

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

Zu,

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