Snažím se nastavit alias tak, aby ukazoval na nějaký adresář na mém souborovém systému, který není v DocumentRootu. Teď dostanu 403 zakázanou odpověď. Toto jsou kroky: 1. upravit http.conf a přidat:
Alias /example "/Users/user/Documents/example"
pak...
<Directory "/Users/user/Documents/example">
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
Allow from all</Directory>
2. nastavení oprávnění s chmod v terminálu:
chmod 755 /Users/user/Documents/example
Mělo by to fungovat? místo toho mám přístup zakázán. Toto je výstup z error_log:
[Sun Jul 24 06:57:57 2011] [error] [client xx.xx.xx.xx] (13)Permission denied: access to /example denied
Měl jsem tento problém na OS X taky. Ukázalo se gliptak bylo správné, ale přidal jsem další podrobnosti.
Oba se pokoušíme nakonfigurovat virtuální adresář pro složku pod domovskou složkou uživatele. Myslím, že to je důvod, proč máme problém. V mém případě jsem měl následující nastavení:
/Users/calrion
./Users/calrion/Path/to/www
./Users/calrion/Path
ukazující na /Volumes/Other/Users/calrion/Path
.Problémem byl uživatel a skupina _www
(které Apache spouští jako na OS X) postrádal přístup k /Users/calrion
a /Volumes/Other/Users/calrion
.
Spuštění chmod o+x /Users/calrion
a chmod o+x /Volumes/Other/Users/calrion
vyřešilo problém (v OS X 10.7.4).
Pravidlo zde je, že Apache vyžaduje spuštění přístupu k all složkám v cestě, aby sloužil souborům. Bez toho získáte HTTP 403 (zakázáno).
Poslední sláma;) Požadovaná místní položka v položce Adresář ...
jako
<Directory "/Users/user/Documents/example">
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Require local
Order allow,deny
Allow from all
</Directory>
pokud vše ostatní nefunguje (správný Alias, Directory Entry v httpd.conf a opravte mod/usr/grp).
mějte na paměti: pokud umístíte vaše stránky do uživatelského prostoru, uživatel Apache (běžící httpd) potřebuje přístup do vašeho domova!
To vše jsou velmi dobré odpovědi. Žádný z nich pro mě nepracoval.
Mám alias zadaný v serveru OSX ukazující na uživatelský adresář. Strávil jsem dlouho při chmoddingu a hrávání s uživatelem _www, rekurzivně přidávám spustitelná oprávnění, odinstaloval macporty a všechny druhy věcí, které se snaží dostat do práce. Snažil jsem se 777. Ne. Nevím, proč to nefungovalo.
Nakonec, Zaškrtl jsem zaškrtávací políčko "sdílená složka" v Finderu pro tuto složku a fungoval na zadané doméně s aktivním php, tak jak jsem to chtěl. :/... takže to bylo snadné.
Kontrola oprávnění /Users/user/Documents/
, /Users/user/
(oprávnění vyšší úrovně jsou vynucena jako první ...)
/bin/su
do uživatele používajícího Apache (např. www, www-data) a cat
soubor v adresáři /Users/user/Documents/example
. To by vás mohlo nasměrovat k povolení problémů s nastavením.
Měl jsem právě tento stejný problém. Bylo zjištěno, že SE_Linux byl povolen a bezpečnostní kontext souborů v mém adresáři Aliased byl nesprávný, chybí httpd_sys_content_t.
Kontext zabezpečení můžete zobrazit pomocí ls -Z
. Pokud vaše soubory/složky nemají httpd_sys_content_t, Apache je nezveřejní! Můžete přidat správný kontext s něčím jako chcon -R --type=httpd_sys_content_t /new_html_directory
. Tím se změní kontext souborů aktuálně v adresáři, ale ne všechny soubory, které jsou přidány později (pro to budete muset pracovat s semanage). Druhou možností je ponechat soubory pod/var/www.
Zde je to, co to pro mě stanovilo:
v /etc/Apache2/httpd.conf
<Directory />
Options FollowSymLinks
AllowOverride None
# REMOVE THESE LINES
#Order deny,allow
#Deny from all
# ADD THIS LINE
Require all denied
</Directory>
Tato změna implementuje změny provedené v aktualizaci Apache z 2,2 na 2,4 . Aktualizace OSX Yosemite přinesla aktualizaci Apache s ní (PSA: pokud plánujete upgrade na Yosemite, rozpočet si týden na opravu všeho, co se zlomí).
Podivná věc je, že už mám Apache 2.4 funkční a najednou se znovu rozbije.
PSA: pokud plánujete upgrade na Yosemite, rozpočet si týden na opravu všeho, co přestane
Po spoustu času odpad jsem opraven problém a chtěl jsem sdílet, aby ušetřil váš čas.
Všichni gentelmenové a na jiných postech mají ve svých odpovědích nějaké správné části, ale níže je součet
Ve vašem souboru "/etc/Apache2/httpd.conf":
1- změnit kořen dokumentu
Original: DocumentRoot "/Library/WebServer/Documents"
Change to: DocumentRoot "/Users/yourname/www"
2 - změna
Originál:
<Directory />
Options FollowSymLinks
AllowOverride None
Order deny,allow
Deny from all
</Directory>
Změnit:
<Directory /Users/yourname/www>
Options FollowSymLinks Includes ExecCGI
AllowOverride None
Order deny,allow
Deny from all
</Directory>
3- Změna:
Originál:
<Directory "/Library/WebServer/Documents">
Změnit:
<Directory "/Users/yourname/www">
4. Nakonec nemusíte tento krok potřebovat, pokud jste uživatelem večeře, to znamená nastavit správnou povolení v nové kořenové složce
chmod 755 /Users/yourname/www
Doufám, že to pomůže
SELinux byl pro mě viníkem. Pokud máte tento problém na linuxovém poli a vaše alias a oprávnění k souborům jsou správná, zkuste provést "setenforce 0", aby se SELinux dostal do režimu permisivního režimu. To pro mě znamenalo trik.
Rychlé řešení:
Tyto příkazy použijte jako root v systému Linux:
find /var/www -type d -exec chmod 755 {} \;
find /var/www -type f -exec chmod 644 {} \;
Musel jsem vrátit svůj konfigurační soubor Apache a znovu nastavit server. to bylo užitečné: https://Apple.stackexchange.com/questions/41143/how-to-revert-default-mac-Apache-install-to-original
Určitě to vypadá dobře, proveďte kontrolu zdravosti.
restartovali jste Apache
kontrolovat vlastnictví skupiny a uživatele
Myslím, že citace mohou být odstraněny
existuje něco v/Users/user/Documents/example?
zkuste 777
-Sean