Foros aprenderaprogramar.com
Aprender a programar => C, C++, C#, Java, Visual Basic, HTML, PHP, CSS, Javascript, Ajax, Joomla, MySql y más => Mensaje iniciado por: gatoher en 30 de Marzo 2016, 21:17
-
Hola a todos tengo un problema a la hora de crear directorios desde un script de PHP, estoy usando Ubuntu como servidor y como usuario PHP es www-data y grupo www-data.
Esto lo se por que lo he mirado con:
$user = getenv('APACHE_RUN_USER');
$group = getenv('APACHE_RUN_GROUP');
echo exec('whoami');
Una solución es crear un directorio dentro del proyecto con permisos 777, pero no me parece nada elegante. Que tendría que hacer, dar permisos de escritura en /var/www al usuario y grupo www-data, o ejecutar PHP con un usuario de permisos de escritura en /var/www.
-
Hola yo creo que www-data es el usuario Apache y este usuario sólo debería tener acceso de lectura. Creo que deberías establecer permisos 775 para que el propietario (root) y el propietario de grupo (admin) tengan accesos a los directorios sobre los que quieras operar, mientras que el resto de usuarios incluido www-data sólo tendrán permiso de lectura.
-
Hola Mastermind, gracias por responder.
A ver, si tienes razón el usuario es de Apache, eso esta claro. Pero si un script de PHP tiene que crear, modificar archivos en el directorio web, osea un ejemplo:
/var/www/html/site.com. Ese directorio es de root, por eso no puede escribir en él.
Además también hago modificaciones con mi usuario, que no es root. Yo root lo gasto para poco.
He visto esta solución:
1- sudo usermod -a -G developer user1 (agregar cada usuario al grupo de desarrolladores)
2-sudo chgrp -R developer /var/www/site.com/ para que los desarrolladores puedan trabajar allí
3- sudo chmod -R 2774 /var/www/site.com/ por lo que sólo los desarrolladores pueden crear/editar archivos (otro/mundo puede Lee)
4-sudo chgrp -R www-data /var/www/site.com/uploads para que pueda crear www-data (apache/nginx) ficheros.
Osea, por lo que yo entiendo es, 'por que no lo entiendo todo':
1-Crear un grupo de desarrollo y agregar ahí mi usuario no root.
2-Poner como propietario del directorio al grupo de desarrollo.
3-Poner permisos de escritura,lectura ejecución al usuario y grupo propietario y sólo lectura a otros.(aqui tego la duda de porque hay un 2 delante del 774 si es octal,¿no debería haber un 0, osea 0774)
4- Crea dentro de /var/www/site.com un directorio 'uploads' para que el usuario de apache pueda crear archivos.
Esta solución parece más elegante. Alguna opinión