Apache nie działa z folderem Witryny użytkownika w systemie macOS 10.13 High Sierra

8

Postępowałem zgodnie z tym przewodnikiem, aby skonfigurować Apache na High Sierra: https://coolestguidesontheplanet.com/get-apache-mysql-php-and-phpmyadmin-working-on-macos-sierra/

Użyłem go, aby skonfigurować go w Sierra.

Ale kiedy idę do http://localhost/~scott/, otrzymuję komunikat „Zabronione. Nie masz uprawnień dostępu do / ~ scott / na tym serwerze”.

Sugestią dotyczącą tego podobnego pytania: localhost / userdir na macOS High Sierra jest ładowanie vhostów. Którego próbowałem, ale wciąż otrzymuję „Zabronione”.

Czy coś zmieniło się między Sierra a High Sierra, co uniemożliwiłoby Apache pracę z folderami Witryn użytkowników?

sfyfedotcom
źródło
Spróbuj apachectl configtesti zaktualizuj dane wyjściowe
Rakesh kumar
ZwrotySyntax OK
sfyfedotcom
Dobrze, odwiedź URL localhost / ~ twoja nazwa użytkownika
Rakesh kumar
„Zabronione. Nie masz uprawnień dostępu do / ~ scott / na tym serwerze.”
sfyfedotcom

Odpowiedzi:

8

To zadziałało, gdy napotkałem ten sam problem.

Sprawdź plik „/private/etc/apache2/extra/httpd-userdir.conf”.

zmiana

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

do

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

i uruchom ponownie apache.

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

Robert
źródło
Ten wiersz /private/etc/apache2/extra/httpd-userdir.confjest już niekomentowany, z linku instrukcji, który podążyłem.
sfyfedotcom
zrestartowałeś apache „sudo apachectl restart”
Robert
Tak.
Dokonałem
4

Aby zezwolić na dostęp do katalogu Witryny, musisz dodać następujące elementy do /etc/apache2/httpd.conf:

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

Domyślna konfiguracja Apache jest ustawiona na odmowę na /, więc musisz jawnie zezwolić na dostęp do wszystkiego.

AGraefe
źródło
Dodano i zrestartowano apache. Nie
zrobiło
Miałem ten sam problem. Otrzymywał „To działa!” na locahost, ale nie mógł uruchomić katalogów użytkowników. Naprawienie reguły DirectoryMatch rozwiązało to. Dzięki!
Karra
4

Wystarczy rozwinąć odpowiedź Diogo Lima.

Wraz z aktualizacją do High Sierra, Apple wykonał kopie twoich poprzednich ustawień apache i dodał ~ poprzednio do plików * .conf zarówno w folderach / etc / apache2, jak i / etc / apache2 / extra. Jeśli używasz hostów wirtualnych lub hostów wirtualnych ssl, musisz również przenieść poprzednie wersje również dla tych plików .conf.

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
James Martin
źródło
To była czysta instalacja High Sierra, więc nie miałem żadnych wcześniejszych plików konfiguracyjnych
sfyfedotcom
Tak więc, dla wyjaśnienia, działałeś na Sierra, ale nie zrobiłeś aktualizacji, a raczej kompletną czystą instalację? Pamiętam, kiedy konfigurowałem pracę z Sierra, że ​​utworzyłem dowiązanie symboliczne z mojego folderu Witryny do folderu / Library / WebServer / Documents i upewniłem się, że udzieliłem sobie pozwolenia (odczyt i zapis). Ponieważ na tym etapie wydaje się to tylko kwestią uprawnień, czy utworzyłeś dowiązanie symboliczne i zmieniłeś uprawnienia?
James Martin
Tak, to jest poprawne. Zawsze wykonuję czystą instalację nowych wersji systemu macOS. Zdaję sobie sprawę, że mogę to zrobić, ale chcę, aby utrzymać zarówno /Library/WebServer/Documentsi Users/username/Sitesjako oddzielne lokalizacji dla projektów internetowych, jak to, co udało mi się zrobić na MacOS przez ostatnie ponad 10 lat.
sfyfedotcom
Wygląda więc na to, że będziesz musiał uruchomić dwie osobne instancje Apache na tym samym komputerze, ale czy nie pokonałoby to całego celu równoważenia obciążenia stron internetowych, które obecnie oferuje Apache, gdy są uruchamiane z jednej instancji? Zaleceniem Apple dotyczącym najlepszych praktyk jest nieużywanie nazwy Użytkownicy / nazwa użytkownika / Witryny i pozostawanie przy Bibliotece / Serwerze internetowym / Dokumentach
James Martin
Pojedyncza instancja Apache to kabel do odczytu projektów internetowych z wielu katalogów. Tak to skonfigurowałem od lat.
sfyfedotcom
3

Po wypróbowaniu wszystkich powyższych metod, jeśli nadal otrzymujesz „zabronione” podczas uzyskiwania dostępu do localhost, spróbuj dodać virtualhost w swoim /etc/apache2/extra/httpd-vhosts.conf

Dodaj:

<VirtualHost *:80>
ServerName localhost
DocumentRoot /Library/WebServer/Documents/
</VirtualHost>

następnie uruchom ponownie apache.

https://coolestguidesontheplanet.com/set-up-virtual-hosts-in-apache-on-macos-high-sierra-10-13/

działa dobrze dla mnie

Josh
źródło
1

Byłem w tej samej sytuacji, najwyraźniej jest jeszcze kilka wierszy do odkomentowania w httpd.conf, vhosty nie są aktywowane w High Sierra. - https://apple.stackexchange.com/a/299929/259065

Hugo Muralles
źródło
Już nie skomentowałem obu tych linii. Nie robi różnicy
sfyfedotcom
1

Właśnie zaktualizowano dziś rano. Korzystanie z folderu Witryny w katalogu / Users / nazwa użytkownika.

Utworzono kopię zapasową i zastąpiono httpd.conf, httpd-userdir.conf i https-vhosts.conf z poprzednimi wariantami ~.

Wystąpił sudo apachectl configtestbłąd PHP (zaktualizowano PHP do wersji 7 w High Sierra). Edytowałem http.conf, aby uruchomić PHP7, a teraz wszystko znów działa.

Jim Nail
źródło
+1 za notatkęsudo apachectl configtest
David C
1

Możliwe rozwiązanie (po niepowodzeniu wszystkich powyższych sugestii). Problem dotyczy zgody katalogu domowego. Powinien być wykonywalny dla grupy / innych:

sudo chmod go + x / Users / username

gdzie „nazwa użytkownika” ma zostać zastąpiona rzeczywistą nazwą użytkownika. Po tym działa!

Gabor
źródło
0

Uff !! Sam to rozgryzłem.

Wykonaj te kroki

Krok 1: Otwórz terminal i uruchom poniższe polecenie

sudo atom /etc/apache2/httpd.conf

Następnie odkomentuj linię, usuwając "#"przed nią znak

LoadModule php7_module libexec/apache2/libphp7.so

Krok 2: Uruchom następujące polecenie wymienione poniżej

cd /private/etc

sudo cp php.ini.default php.ini

Krok 3: Następnie przejdź do /Library/WebServer/Documentskatalogu i zrób

sudo chown -R  root yourprojectname

Wróć do przeglądarki Safari i wpisz "http://localhost/yourprojectname"

Wszystko gotowe.

Używam MacOS High Sierra 10.13, został zaktualizowany wczoraj rano.

Shadab K
źródło
localhostucieczka /Library/WebServer/Documentsdziała dobrze. Problem jest uruchomiony localhost/~scottz /Users/Scott/Sites.
sfyfedotcom
0

Spędziłem cały ranek, żeby to rozgryźć, ale w końcu udało się. Mam nadzieję, że może to być przydatne dla kogoś.

Postępowałem zgodnie z przewodnikiem, ale z niewielką zmianą.

Teraz mogę uzyskać dostęp do folderów localhost, ale ...

Przed wysoką sierrą wyglądało to tak: http://localhost/~username/smomesite.local

Teraz jest jak: http://localhost/smomesite.local

Nie jest już ~usernamewymagane.

iGian
źródło
Nie chcę zmieniać domyślnej ścieżki internetowej apache do mojego folderu użytkownika. W poprzedniej wersji systemu macOS mogłem uruchamiać pliki / witryny zarówno z Users/myname/Siteskatalogu, jak i/Library/WebServer/Documents
sfyfedotcom
0

Właśnie miałem ten sam problem i chciałem zrobić dokładnie to, co chciałeś (zachowaj katalog główny w / Library / WebServer / Documents, ale zezwól również na foldery Witryn użytkownika). Nie jestem pewien, czy to będzie pomocne, ale po tym, jak waliłem o to godzinami tej nocy, przeglądając wiersz po wierszu przez wszystkie pliki .conf i zastanawiając się, co było nie tak, zdałem sobie sprawę, że proces httpd nie był w stanie odczytać mojego własny katalog użytkownika. Z jakiegoś powodu ustawiono go na 750, a użytkownik _www nie może go odczytać. Kiedyś to naprawiłem, uruchamiając „chmod 755”. w moim katalogu użytkownika folder Witryny pojawił się od razu.

Nie jestem pewien, jak wyglądał mój własny katalog użytkowników, ponieważ wygląda na to, że domyślnie 755, kiedy tworzę nowego użytkownika. I już wielokrotnie sprawdzałem, czy mój folder Witryny jest ustawiony na 755.

Paweł
źródło
Po prostu spróbowałem tego i ponownie uruchomiłem Apache. Nadal „Zabronione: nie masz uprawnień dostępu do / ~ nazwa użytkownika / na tym serwerze”
sfyfedotcom
0

Miałem ten sam problem. Odkomentowałem dwie linie poniżej (jak już zasugerowałem w innej odpowiedzi)

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

Ale nadal pojawia się ten sam błąd. Sztuką było dla mnie odkomentowanie tych dodatkowych wierszy w pliku httpd.conf:

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

Mam nadzieję, że to pomaga.

Mikrofon
źródło
Już nie
skomentowałem
0

Zdarza się, że aktualizacja przeniosła całą poprzednią konfigurację do plików .conf ~ previous. Jeśli przeniesiesz /etc/apache2/extra/httpd-userdir.conf~poprzedniej do /etc/apache2/extra/httpd-userdir.conf i /etc/apache2/extra/httpd.conf~poprzedniej do / etc / apache2 / extra / httpd.conf, powinno działać jak wcześniej.

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
Diogo Lima
źródło
To była czysta instalacja High Sierra, więc nie miałem żadnych wcześniejszych plików konfiguracyjnych
sfyfedotcom
0

Miałem ten sam problem. Rozdzielczość była łatwa. Zobacz odpowiedź zamieszczoną tutaj: https://apple.stackexchange.com/a/306390/129503

Tak samo było po aktualizacji do High Sierra dzisiaj. Odkryłem, że następujące pliki apache zostały zastąpione nowymi wersjami. Na szczęście dla wszystkich tych plików istniał poprzedni plik PLIK ~ w tym samym folderze. Właśnie skopiowałem poprzednią wersję ~ z powrotem do oryginalnych, ponownie uruchomiłem apache i wszystko było w porządku.

W folderze /etc/apache2:

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

Przykład:

cp /etc/apache2/httpd.conf~previous /etc/apache2/httpd.conf
Unmesh
źródło
0

Zastąpić

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

ze starszych ~ poprzednich plików.

Może pojawić się błąd modułu php5 w httpd.conf, zamień php5 na php7 i twoje strony powinny zacząć działać.

Zastąpić

LoadModule php5_module libexec/apache2/libphp5.so

Z

LoadModule php7_module libexec/apache2/libphp7.so
Reverselogic
źródło
0

Właśnie zaktualizowałem i miałem dokładnie te same problemy. Nie używam vhostów. Rozwiązaniem było dla mnie zapewnienie:

w https.confUncomment

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

i upewnij się, że extra/httpd-user.confma linię:

UserDir Sites
Helen Snaith
źródło