Apache funktioniert nicht mit dem Ordner "User Sites" unter macOS 10.13 High Sierra


8

Ich habe diese Anleitung befolgt, um Apache in High Sierra einzurichten: https://coolestguidesontheplanet.com/get-apache-mysql-php-and-phpmyadmin-working-on-macos-sierra/

Ich habe es benutzt, um es in Sierra einzurichten.

Aber wenn ich zu gehe, http://localhost/~scott/erhalte ich "Verboten. Sie haben keine Berechtigung, auf diesen Server auf / ~ scott / zuzugreifen."

Ein Vorschlag zu dieser ähnlichen Frage: localhost / userdir unter macOS High Sierra ist das Laden von vhosts. Was ich versucht habe, aber trotzdem "Verboten" bekomme.

Hat sich zwischen Sierra und High Sierra etwas geändert, das Apache daran hindern würde, mit Ordnern für Benutzerseiten zu arbeiten?


Versuchen Sie apachectl configtestund aktualisieren Sie die Ausgabe
Rakesh Kumar

RückkehrSyntax OK
sfyfedotcom


"Verboten. Sie haben auf diesem Server keine Berechtigung, auf / ~ scott / zuzugreifen."
sfyfedotcom

Antworten:


8

Dies funktionierte für mich, als ich auf das gleiche Problem stieß.

Bitte überprüfen Sie die Datei "/private/etc/apache2/extra/httpd-userdir.conf".

Veränderung

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

zu

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

und Apache neu starten.

Von: /programming/39631351/apache-localhost-403-forbidden-with-macos-sierra


Diese Zeile /private/etc/apache2/extra/httpd-userdir.confist bereits nicht kommentiert, wie aus dem Anweisungslink hervorgeht, dem ich gefolgt bin.
sfyfedotcom

hast du Apache neu gestartet "sudo apachectl restart"
Robert

Ja. Ich habe alle Änderungen an den Konfigurationsdateien von Apache vorgenommen
sfyfedotcom

4

Um den Zugriff auf das Site-Verzeichnis zu ermöglichen, müssen Sie Folgendes hinzufügen /etc/apache2/httpd.conf:

<DirectoryMatch "/Users/.*/Sites">
  Require all granted
</DirectoryMatch>

Die Standardkonfiguration von Apache ist auf / verweigert , daher müssen Sie den Zugriff auf alles explizit zulassen.


Apache hinzugefügt und neu gestartet. Hat keinen Unterschied gemacht
sfyfedotcom

Ich hatte das gleiche Problem. Bekam das "Es funktioniert!" auf locahost, konnte aber die Benutzerverzeichnisse nicht zum Laufen bringen. Das Beheben der DirectoryMatch-Regel auf diese Weise löste das Problem. Vielen Dank!
Karra

4

Nur um auf Diogo Limas Antwort einzugehen.

Mit dem Upgrade auf High Sierra hat Apple Kopien Ihrer vorherigen Apache-Einstellungen erstellt und ein ~ vor den * .conf-Dateien sowohl in den Ordnern / etc / apache2 als auch in den Ordnern / etc / apache2 / extra angehängt. Wenn Sie virtuelle Hosts oder SSL-virtuelle Hosts verwenden, müssen Sie auch Ihre vorherigen Versionen für diese .conf-Dateien verschieben.

mv /etc/apache2/extra/httpd-vhosts.conf~previous /etc/apache2/extra/httpd-vhosts.conf
mv /etc/apache2/extra/httpd-ssl.conf~previous /etc/apache2/extra/httpd-ssl.conf

Dies war eine Neuinstallation von High Sierra, daher hatte ich keine vorherigen Konfigurationsdateien
sfyfedotcom

Um dies zu verdeutlichen, haben Sie es in Sierra ausgeführt, aber kein Upgrade durchgeführt, sondern eine vollständige Neuinstallation? Ich erinnere mich, dass ich beim Einrichten von Sierra einen symbolischen Link von meinem Sites-Ordner zum Ordner / Library / WebServer / Documents erstellt und sichergestellt habe, dass ich mir die Berechtigung erteilt habe (Lesen und Schreiben). Haben Sie die symbolische Verknüpfung hergestellt und die Berechtigungen geändert, da dies zu diesem Zeitpunkt lediglich ein Berechtigungsproblem zu sein scheint?
James Martin

Ja das ist richtig. Ich mache immer eine Neuinstallation neuer MacOS-Versionen. Ich bin mir bewusst, dass ich das kann, aber ich möchte beide /Library/WebServer/Documentsund Users/username/Sitesals separate Speicherorte für Webprojekte beibehalten , da ich dies in den letzten 10 Jahren unter macOS tun konnte.
sfyfedotcom

Es sieht also so aus, als müssten Sie zwei separate Instanzen von Apache auf demselben Computer ausführen, aber würde dies nicht den gesamten Zweck des Lastausgleichs der Websites zunichte machen, die Apache jetzt anbietet, wenn sie von einer einzelnen Instanz ausgeführt werden? Apples Best-Practice-Empfehlung lautet, Benutzer / Benutzername / Websites nicht mehr zu verwenden und sich an die Bibliothek / den Webserver / die Dokumente zu halten
James Martin,

Die einzelne Apache-Instanz ist ein Kabel zum Lesen von Webprojekten aus mehreren Verzeichnissen. So habe ich es seit Jahren eingerichtet.
sfyfedotcom



1

Gerade heute Morgen aktualisiert. Verwenden des Sites-Ordners in / Users / username.

Sicherte und ersetzte httpd.conf, httpd-userdir.conf und https-vhosts.conf mit den vorherigen Varianten.

Lief sudo apachectl configtestund bekam den PHP-Fehler (PHP in High Sierra auf 7 aktualisiert). Habe http.conf bearbeitet, um PHP7 zu starten und jetzt funktioniert alles wieder.


+1 für einschließlich Notizsudo apachectl configtest
David C

1

Mögliche Lösung (nachdem alle oben genannten Vorschläge fehlgeschlagen sind). Das Problem ist mit der Erlaubnis des Home-Verzeichnisses. Es sollte für Gruppen / andere ausführbar sein:

sudo chmod go + x / Benutzer / Benutzername

wobei "Benutzername" durch den tatsächlichen Benutzernamen ersetzt werden soll. Danach funktioniert es!


0

Puh!! Ich habe es selbst herausgefunden.

Führen Sie diese Schritte aus

Schritt 1: Öffnen Sie Ihr Terminal und führen Sie den folgenden Befehl aus

sudo atom /etc/apache2/httpd.conf

Und dann kommentieren Sie die Zeile aus, indem Sie das "#"Schild davor entfernen

LoadModule php7_module libexec/apache2/libphp7.so

Schritt 2: Führen Sie den folgenden Befehl aus

cd /private/etc

sudo cp php.ini.default php.ini

Schritt 3: Gehen Sie dann in Ihr /Library/WebServer/DocumentsVerzeichnis und führen Sie eine

sudo chown -R  root yourprojectname

Kehren Sie zu Ihrem Safari-Browser zurück und geben Sie ein "http://localhost/yourprojectname"

Sie sind bereit zu gehen.

Ich benutze MacOS High Sierra 10.13, es wurde gestern Morgen aktualisiert.


localhostLaufen von /Library/WebServer/Documentsfunktioniert gut. Das Problem läuft localhost/~scottvon /Users/Scott/Sites.
sfyfedotcom

0

Verbrachte den ganzen Morgen, um es herauszufinden, aber schließlich funktionierte es. Hoffe, das kann für jemanden nützlich sein.

Ich folgte einer Anleitung, aber mit einer leichten Änderung.

Jetzt kann ich auf localhost-Ordner zugreifen, aber ...

Vor der Hochsierra war es wie: http://localhost/~username/smomesite.local

Jetzt ist wie: http://localhost/smomesite.local

Nicht mehr ~usernameerforderlich.


Ich möchte den Standard-Apache-Webpfad nicht in meinen Benutzerordner ändern. In der vorherigen Version von macOS konnte ich Dateien / Sites sowohl aus dem Users/myname/SitesVerzeichnis als auch aus/Library/WebServer/Documents
sfyfedotcom

0

Ich hatte gerade das gleiche Problem und wollte genau das tun, was Sie wollten (behalten Sie das Stammverzeichnis unter / Library / WebServer / Documents bei, lassen Sie aber auch Ordner für Benutzerseiten zu). Ich bin mir nicht sicher, ob dies hilfreich sein wird, aber nachdem ich heute Abend stundenlang darauf geklopft hatte, Zeile für Zeile durch alle .conf-Dateien geschaut und mich gefragt hatte, was falsch war, stellte ich fest, dass der httpd-Prozess meine nicht lesen konnte eigenes Benutzerverzeichnis. Aus irgendeinem Grund wurde der Wert auf 750 festgelegt, und der Benutzer _www kann ihn nicht lesen. Einmal habe ich das behoben, indem ich "chmod 755" ausgeführt habe. In meinem Benutzerverzeichnis wurde der Ordner "Sites" angezeigt.

Ich bin mir nicht sicher, wie mein eigenes Benutzerverzeichnis so geworden ist, da es den Anschein hat, dass sie beim Erstellen eines neuen Benutzers standardmäßig 755 sind. Und ich hatte bereits viele Male überprüft, ob mein Sites-Ordner auf 755 eingestellt war.


Hab das einfach versucht und Apache neu gestartet. Immer noch "Verboten: Sie haben keine Berechtigung, auf / ~ Benutzername / auf diesem Server
zuzugreifen

0

Ich hatte das gleiche Problem. Ich habe die beiden folgenden Zeilen auskommentiert (wie bereits in einer anderen Antwort vorgeschlagen).

#LoadModule vhost_alias_module libexec/apache2/mod_vhost_alias.so 
#Include /private/etc/apache2/extra/httpd-vhosts.conf

Habe aber immer noch den gleichen Fehler. Der Trick für mich war, diese zusätzlichen Zeilen in der Datei httpd.conf zu kommentieren:

#LoadModule userdir_module libexec/apache2/mod_userdir.so 
#LoadModule include_module libexec/apache2/mod_include.so 
#LoadModule rewrite_module libexec/apache2/mod_rewrite.so

Ich hoffe, das hilft.


Ich habe diese Zeilen bereits
auskommentiert

0

Es kommt vor, dass das Update Ihre gesamte vorherige Konfiguration in die Datei .conf ~ previous verschoben hat. Wenn Sie /etc/apache2/extra/httpd-userdir.conf~previous zu /etc/apache2/extra/httpd-userdir.conf und /etc/apache2/extra/httpd.conf~previous zu / etc / apache2 / verschieben extra / httpd.conf, es sollte wie vorher funktionieren.

mv /etc/apache2/extra/httpd-userdir.conf /etc/apache2/extra/httpd-userdir.conf~high-sierra
mv /etc/apache2/httpd.conf /etc/apache2/httpd.conf~high-sierra
mv /etc/apache2/extra/httpd-userdir.conf~previous /etc/apache2/extra/httpd-userdir.conf
mv /etc/apache2/httpd.conf~previous /etc/apache2/httpd.conf
apachectl restart

Dies war eine Neuinstallation von High Sierra, daher hatte ich keine vorherigen Konfigurationsdateien
sfyfedotcom

0

Ich hatte das gleiche Problem. Die Auflösung war einfach. Siehe Antwort hier: https://apple.stackexchange.com/a/306390/129503

Ich sah mich dem auch gegenüber, nachdem ich heute früher auf High Sierra umgestiegen war. Ich fand heraus, dass die folgenden Apache-Dateien durch brandneue Versionen ersetzt wurden. Zum Glück gab es für alle diese Dateien eine DATEI ~ vorherige Datei im selben Ordner. Ich habe gerade die ~ vorherige Version zurück in die ursprüngliche Version kopiert, Apache neu gestartet und alles war in Ordnung.

Im Ordner /etc/apache2:

./httpd.conf
./extra/httpd-vhosts.conf
./extra/httpd-ssl.conf

Beispiel:

cp /etc/apache2/httpd.conf~previous /etc/apache2/httpd.conf

0

Ersetzen

./httpd.conf
./extra/httpd-vhosts.conf
./extra/httpd-ssl.conf

von älteren ~ vorherigen Dateien.

Wenn Sie in httpd.conf einen Fehler im PHP5-Modul erhalten, ersetzen Sie PHP5 durch PHP7, und Ihre Websites sollten funktionieren.

Ersetzen

LoadModule php5_module libexec/apache2/libphp5.so

Mit

LoadModule php7_module libexec/apache2/libphp7.so

0

Ich habe gerade ein Upgrade durchgeführt und hatte genau die gleichen Probleme. Ich benutze keine vhosts. Die Lösung für mich war sicherzustellen:

In https.confKommentar

LoadModule userdir_module libexec/apache2/mod_userdir.so

LoadModule authz_host_module libexec/apache2/mod_authz_host.so

LoadModule authz_user_module libexec/apache2/mod_authz_user.so

LoadModule authz_core_module libexec/apache2/mod_authz_core.so

und stellen Sie sicher, dass extra/httpd-user.confdie Linie hat:

UserDir Sites
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.