Zmieniłem konfigurację Apache, aby wskazywała folder w moim katalogu domowym:
<VirtualHost *:80>
ServerAdmin webmaster@localhost
DocumentRoot /home/dbugger/html
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory /home/dbugger/html/>
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all
</Directory>
ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
<Directory "/usr/lib/cgi-bin">
AllowOverride None
Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
Order allow,deny
Allow from all
</Directory>
ErrorLog ${APACHE_LOG_DIR}/error.log
# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel warn
CustomLog ${APACHE_LOG_DIR}/access.log combined
Alias /doc/ "/usr/share/doc/"
<Directory "/usr/share/doc/">
Options Indexes MultiViews FollowSymLinks
AllowOverride None
Order deny,allow
Deny from all
Allow from 127.0.0.0/255.0.0.0 ::1/128
</Directory>
</VirtualHost>
Udzieliłem nawet mojej /home/dbugger/html
zgody 777. Nadal jednak pojawia się ten sam komunikat o błędzie pod adresem http://localhost
: „403 Forbidden”
Czego mi brakuje?
/home/dbugger
pozwoleniem?Odpowiedzi:
To zadziałało dla mnie
Ważne było, aby się zmienić
do
źródło
Allow from all
począwszy od Apache 2.4 - serverfault.com/questions/549517/…AllowOverride
sięAll
na swoim głównym katalogu jest lekkomyślny w najlepszym wydaniu! Aby uzyskać szczegółowe informacje, zobacz httpd.apache.org/docs/2.4/mod/core.html#allowoverride .Włącz
userdir
moduł:Włącz wykonywanie PHP w katalogu użytkownika:
(Lub jeśli na przykład używasz php7.0)
Skomentuj tę część (umieszczoną
#
na początku każdej linii):Naciśnij Ctrl+, Xaby zapisać
Włącz listę katalogów:
Dodaj:
Naciśnij Ctrl+, Xaby zapisać
Zrestartuj apache (
sudo
wymagany tutaj również):Teraz umieść pliki php w
/home/yourname/public_html
katalogu i przejdź dohttp://localhost/~yourname
przeglądarki.źródło
Apache działa jako użytkownik
www-data
. Jeśli nie ma pozwolenia na wykonanie w twoim domu, apache nie będzie mógł odczytać żadnego pliku.Zmień grupę domową na
www-data
:I pozwól mu tylko na przeglądanie twojego katalogu domowego:
Możesz także ograniczyć uprawnienia
/home/dbugger/html
:źródło
/home/dbugger
używać/home/dbugger/html
?/home/dbugger/html
zamiast 777, ale musisz pamiętać, że jeśli dane www użytkownika nie mogą dostać sięcd
do twojego domu, nie będzie on miał dostępu do żadnego pliku lub podfolderu. Tak więc, jeśli twoje pozwolenie na dom torwx------ dbugger:dbugger
apache, nie będziesz mógł uzyskać dostępu do żadnego pliku w domu. Jeśli nie chcesz trochę ograniczać dostępu, możesz spróbować dać tylko uprawnienia do wykonywania (chmod g+x /home/dbugger
), nie jestem pewien, ale myślę, że to działa.chgrp www-data /home/dbugger
w połączeniu z metodą @DavidGreene sprawiło, że zadziałało dla mniesudo usermod -a -G dbugger www-data
, po czym należy ponownie uruchomić apache.Nie musisz zmieniać uprawnień, jeśli chcesz używać katalogu domowego do hostowania środowiska programistycznego, przynajmniej, że potrzebujesz uprawnień do zapisu dla niektórych aplikacji. Potrzebujesz modułu apache mod_userdir i możesz uzyskać dostęp do / home / nazwa_użytkownika / public_html / * jak ten http: //domain.local/~user_name/dir_name/ * do korzystania z hostów wirtualnych, aby użyć modułu mod_userdir, musisz utworzyć sym link taki:
źródło
a2enmod userdir