2011-10-08 17 views
5

No estoy seguro si esto es una configuración de php o problema de permiso de archivo de Linux. El problema que estoy teniendo es cuando se carga un archivo a través de PHP usando move_uploaded_file() en el directorio que tiene grupo conjunto de ubuntu y propietario conjunto a www-data, el archivo cargado propietario y grupo permisos cambiar a www-data que causa problemas para que mi script python entre y realice su tarea en el archivo cargado.los permisos del grupo y del propietario son incorrectos cuando php carga archivos

ejemplo:

move_uploaded_file($tempFile,$targetSAVE); 

- $ targetSAVE directorio se establece en:

group: ubuntu 
owner: www-data 
permissions: 0755 

--php fichero subido cambia propietario y grupo a www-data

new file changes to: 
    group: www-data <-- need this set to *ubuntu* 
    owner: www-data 
    permissions: 0755 

guión --python necesita el grupo del archivo subido establece en ubuntu

¿Cómo puedo configurar php para establecer la propiedad o grupo de archivo subido a ubuntu o si se trata de una cuestión de permisos de ficheros Linux cómo puedo arreglar esto?

todos los directorios y subdirectorios se establecen en: grupo: ubuntu propietario: ubuntu permisos: 0755 excepto el directorio de los archivos se están subiendo a, esto se establece en:

group: ubuntu 
owner: www-data 
permissions: 0755 

Respuesta

3

Encontré la solución. Después de sacarme el pelo y probar todas las demás respuestas, resultó ser muy simple, esto es lo que funcionó.

chown -R ubuntu:www-data /var/www/ 
chmod -R 775 /var/www/ 

Después de eso, el script de python se ejecutó perfectamente desde php.

0

Supongo que solo agregaría una directiva chirp al final del script PHP, si eso funciona en tu caso. http://us.php.net/manual/en/function.chgrp.php

busque en/etc/passwd para obtener el identificador numérico para el usuario "ubuntu".

Nota de los documentos: "Solo el superusuario puede cambiar arbitrariamente el grupo de un archivo; otros usuarios pueden cambiar el grupo de un archivo a cualquier grupo del que ese usuario sea miembro".

1

Esto sucede porque PHP se ejecuta como el usuario que ejecuta el servidor web. En efecto, todos los sitios web de su sistema se ejecutarán como este usuario/grupo y, por lo tanto, todos tendrán acceso para leer los archivos y directorios de cada uno creados por los scripts php.

La instalación de Apache mod suPHP es probablemente la solución más fácil a este problema. Esto le permitirá ejecutar scripts php en un host virtual como un usuario y grupo específico. También puede ejecutar PHP como CGI y usar Apache suEXEC, pero esto es un poco más complicado de configurar que suPHP.

Como alternativa, solo debe poder recortar los archivos de sus scripts al usuario/grupo apropiado, pero el efecto será que el servidor web ya no podrá leer/editar esos archivos una vez que cambie su propiedad.

Cuestiones relacionadas