Problemy z uprawnieniami w Symfony2
To pytanie było zadawane kilka razy, ale żadne z rozwiązań nie naprawia go w mojej sytuacji.
Uruchamiam Apache na Mac OSX Lion. Ten http://localhost/Symfony/web/config.php
URL wyzwala 2 główne problemy:
Change the permissions of the "app/cache/" directory so that the web server can write into it.
Change the permissions of the "app/logs/" directory so that the web server can write into it.
Postępuj zgodnie z instrukcją w sekcji "Konfigurowanie uprawnień":
rm -rf app/cache/*
rm -rf app/logs/*
sudo chmod +a "_www allow delete,write,append,file_inherit,directory_inherit" app/cache app/logs
sudo chmod +a "`whoami` allow delete,write,append,file_inherit,directory_inherit" app/cache app/logs
To nie rozwiązuje problemów, więc spróbowałem:
sudo chmod -R 777 app/cache
To też nie działa. Jakieś pomysły, jak to naprawić? 3 answers
Niektóre wstępne wyjaśnienia:
- aby zwiększyć wydajność Twojej witryny, Symfony2 musi buforować wiele danych i robi to poprzez zapis skompilowanych plików do katalogu
app/cache
. - aby zaproponować zaawansowane funkcje debugowania i monitorowania, Symfony2 musi śledzić zachowanie Twojej witryny i robi to poprzez zapis pliki śledzenia do katalogu
app/logs
.
Kilka słów o Apache:
- Apache działa pod określonym
user
i określonymgroup
(Zwyklewww-data
dla obu, ale musisz sprawdzić instalację, aby znaleźć używane. Na przykład, jeśli wyszukasz/etc/apache2/envvars
w Linuksie, będziesz miał dwie zmienneAPACHE_RUN_USER=www-data
iAPACHE_RUN_GROUP=www-data
). - oznacza to, że kiedy budujesz swoją stronę na ramionach Symfony2 i uruchamiasz ją pod Apache, każdy zapis i odczyt odbywa się w imieniu Apache
user
igroup
.
Analizuj swoje problemy:
-
Po pierwsze masz błędy typu:
Change the permissions of the "app/cache/" directory so that the web server can write into it. Change the permissions of the "app/logs/" directory so that the web server can write into it.
Ponieważ twoje
app/cache
iapp/logs
foldery nie są zapisywalne dla Twojego Apacheuser
igroup
. -
Po Drugie, wykonując:
sudo chmod +a "_www allow delete,write,append,file_inherit,directory_inherit" app/cache app/logs sudo chmod +a "`whoami` allow delete,write,append,file_inherit,directory_inherit" app/cache app/logs
Modyfikujesz listę kontroli dostępu (ACL) folderów
app/cache
iapp/logs
w celu nadania pewnych uprawnieńwhoami
(w zasadzie Tobie) i_www
. Takie podejście nie działa i może mieć dwa pochodzenie:Modyfikujesz ACLs, ale czy twoje jądro i system plików są skonfigurowane tak, aby uwzględniały ACLs?
Dajesz pewne uprawnienia
whoami
i_www
, ale czy sprawdziłeś, czy Twoja instancja Apache działa pod jednym z tych użytkowników?
-
Po Trzecie twoi koledzy rozwiązują problem wykonując:
To podejście działa z dwóch powodów:]}sudo chmod -R 777 app/cache
- dajesz wszystko uprawnienia (Odczyt i zapis) dla każdego użytkownika w Twoim systemie (
777
), więc jesteś pewien, że przynajmniej twój użytkownik Apache i grupa mają również wymagane uprawnienia do zapisu wapp/cache
. - robisz to rekurencyjnie (
-R
), więc wszystkie zagnieżdżone foldery utworzone w kataloguapp/cache
są również objęte nowymi uprawnieniami.
- dajesz wszystko uprawnienia (Odczyt i zapis) dla każdego użytkownika w Twoim systemie (
Proste rozwiązanie:
-
Usuń zawartość folderów
app/cache
iapp/logs
:rm -rf app/cache/* rm -rf app/logs/*
-
Give all uprawnienia (Odczyt i zapis) do folderów
app/cache
iapp/logs
:chmod 777 app/cache chmod 777 app/logs
Uwagi:
- istnieją również inne rozwiązania (z większą trudnością), takie jak udzielanie uprawnień konkretnemu użytkownikowi i grupie Apache oraz używanie ACLs do precyzyjnego dostrajania.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-07-13 23:31:29
Przewodnik pod "Konfigurowanie uprawnień" mówi, że jeśli Twój system nie obsługuje chmod +a, musisz to zrobić:
HTTPDUSER=`ps aux | grep -E '[a]pache|[h]ttpd|[_]www|[w]ww-data|[n]ginx' | grep -v root | head -1 | cut -d\ -f1`
sudo setfacl -R -m u:"$HTTPDUSER":rwX -m u:`whoami`:rwX app/cache app/logs
sudo setfacl -dR -m u:"$HTTPDUSER":rwX -m u:`whoami`:rwX app/cache app/logs
Jeśli to nie zadziała spróbuj tego:
umask(0002); // This will let the permissions be 0775
// or
umask(0000); // This will let the permissions be 0777
Pierwsze rozwiązanie zadziałało. Mam nadzieję, że to pomoże komuś z tego samego typu problemem.Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-06-18 13:28:15
rm -rf app/cache/*
rm -rf app/logs/*
APACHEUSER=`ps aux | grep -E '[a]pache|[h]ttpd' | grep -v root | head -1 | cut -d\ -f1`
sudo setfacl -R -m u:$APACHEUSER:rwX -m u:`whoami`:rwX app/cache app/logs
sudo setfacl -dR -m u:$APACHEUSER:rwX -m u:`whoami`:rwX app/cache app/logs
Source:
http://symfony.com/doc/current/book/installation.html#configuration-and-setup
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-10-12 18:08:02