2012-07-13 4 views
27

Esta pregunta se ha formulado varias veces, pero ninguna de las soluciones la soluciona en mi situación.Problemas de permisos en Symfony2

Estoy ejecutando Apache en Mac OSX Lion. Esta URL http://localhost/Symfony/web/config.php desencadena 2 problemas principales:

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. 

Tras la guide en "Configuración de permisos":

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 

que no resuelve los problemas, por lo que entonces intenté:

sudo chmod -R 777 app/cache 

Eso tampoco funciona. Alguna idea de cómo solucionar este problema?

+1

mi colega en el trabajo en MacOS utilizó la solución 'sudo chmod -R 777 aplicación/caché' y funcionó para él. ¿Qué está pasando exactamente después de chmod? –

Respuesta

49

Algunas explicaciones preliminares:

  • Con el fin de mejorar el rendimiento de su sitio web, Symfony2 tiene que almacenar en caché una gran cantidad de datos y lo hace escribiendo archivos compilados en el directorio de app/cache.
  • Para proponer potentes funciones de depuración y supervisión, Symfony2 necesita realizar un seguimiento del comportamiento de su sitio web y lo hace escribiendo archivos de rastreo en su directorio app/logs.

Algunas palabras sobre Apache:

  • Apache se ejecuta bajo una específica user y una específica group (por lo general www-data para ambos, pero hay que controlar la instalación para encontrar los utilizados Por ejemplo, si. busca en el /etc/apache2/envvars en Linux, tendrá dos variables APACHE_RUN_USER=www-data y APACHE_RUN_GROUP=www-data).
  • Significa que cuando crea su sitio web en Symfony2 hombros y lo ejecuta en Apache, cada escrituras y lecturas se realizan en nombre de Apache user y group.

Analizar de sus problemas:

  • En primer lugar usted tiene errores como:

    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. 
    

    porque sus app/cacheapp/logs y carpetas no se pueden escribir para su Apache user y group.

  • En segundo lugar, mediante la ejecución:

    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 
    

    está modificando la Lista control de acceso (ACL) de las carpetas app/cache y app/logs con el fin de otorgar algunos permisos a whoami (básicamente usted) y para _www . Este enfoque no funciona y puede tener dos orígenes:

    ACL
    1. está modificando, pero son de su núcleo y su sistema de archivos configurado para tener en cuenta las ACL?

    2. Usted está dando algunos permisos a whoami y al _www, pero ¿ha comprobado que su instancia de Apache se ejecuta bajo uno de estos usuarios?

  • En tercer lugar sus colegas resuelve el problema mediante la ejecución:

    sudo chmod -R 777 app/cache 
    

    Este enfoque funciona debido a dos razones:

    1. le dará todos los permisos (lectura y escritura) a todos los usuarios en su sistema (777), por lo que está seguro de que al menos su usuario y grupo de Apache también tienen los permisos necesarios para escribir en app/cache.
    2. Lo hace recursivamente (-R), por lo que todas las carpetas anidadas creadas en el directorio app/cache también están afectadas por los nuevos permisos.

solución simple:

  1. Eliminar el contenido de sus app/cache y app/logs carpetas:

    rm -rf app/cache/* 
    rm -rf app/logs/* 
    
  2. Dale todos los permisos (lectura y escritura) a su app/cache y app/logs carpetas:

    chmod 777 app/cache 
    chmod 777 app/logs 
    

Observaciones:

  • También hay otras soluciones (con una mayor dificultad) como dar permiso al usuario específico de Apache y de grupo y uso de las ACL para un ajuste fino.
+0

Esa fue una gran respuesta, pero ahora después de eliminar y otorgar nuevos permisos a las carpetas, la página de bienvenida _http: //localhost/Symfony/web/app_dev.php/_ muestra una página vacía/en blanco. De acuerdo con la página config.php todo estaba bien ... – subharb

+2

De nada;) El hecho de que obtenga una página en blanco no está relacionado con problemas de permisos. ¿Ha comprobado que tiene una plantilla no vacía para su página de índice? Tal vez puedas publicar una nueva pregunta si crees que esto es realmente un problema. – fsenart

+0

¿Pero la plantilla viene con una nueva instalación de Symfony? ¿Estás seguro de que la plantilla no está cargada debido a un problema de permisos? – subharb

1
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

+0

Su está en Mac OS X, esto es para distribuciones de Linux con setfacl instalado. –

+0

Eso me ayudó. ¡Gracias! – keepkimi

9

El guide en la sección "Configuración de permisos arriba" dice que si su sistema no admite chmod + a lo que tiene que hacer esto:

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 

Si eso no funciona intente esto:

umask(0002); // This will let the permissions be 0775 

// or 

umask(0000); // This will let the permissions be 0777 

La primera solución funcionó para mí. Espero que ayude a alguien con el mismo tipo de problema.

Cuestiones relacionadas