2008-10-15 22 views
8

Estoy ejecutando PHP 5.2.6 en un cuadro de Windows Server 2003 Enterprise. IIS está configurado para denegar el acceso anónimo y usar la autenticación integrada de Windows.Odd permisos en el archivo modificado por PHP move_uploaded_file()

Estoy usando un script PHP para guardar un archivo cargado desde un formulario web. El archivo se carga en una carpeta temporal, el script crea un nombre de archivo y una ruta dependiendo de otras variables del formulario web, y luego el script usa el movimiento _ de PHP para cargar el archivo temporal en la ubicación final. Todo lo que funciona bien. En resumen, las personas están cargando archivos para que todos en el grupo puedan verlos y los archivos estén organizados por el script.

Mi problema es que el archivo en la ubicación final tiene permisos impares. No está terminando con permisos de la ubicación temporal o la ubicación final. Tanto la ubicación temporal como la ubicación final tienen los mismos permisos: derechos completos para el propietario y las administraciones; leer y leer/ejecutar para 2 grupos de seguridad AD específicos. El archivo final termina con solo: derechos completos para el propietario y las administraciones. Entonces, mientras los administradores y el cargador original no tienen problemas para ver el archivo, todos los demás en el grupo obtienen "permiso denegado" cuando intentan acceder a él.

¡Cualquier idea o sugerencia será muy apreciada! ¡Gracias!

Respuesta

4

Esto parece ser un problema con la función move_uploaded_file():
http://us3.php.net/move_uploaded_file
Tome un vistazo a los comentarios a continuación, tomar nota de la observación de Florian acerca de copia().

copiaría() resolver el problema ?:
http://us3.php.net/manual/en/function.copy.php

+0

Eso funcionó. ¡Gracias! – user13414

+0

No hay problema, me alegro de poder ayudar. –

+0

Sería conveniente verificar que is_uploaded_file() devuelve verdadero en el archivo temporal si está utilizando copy(), ya que move_uploaded_file() implementa esta comprobación –

7

desde la página php en move_uploaded_file (Nota: esto funcionó para mí):

Para aquellos que utilizan PHP en Windows y IIS, DEBERÍA establecer el valor de "upload_tmp_dir" en php.ini en algún directorio alrededor de donde está el directorio de su sitio web, cree ese directorio y luego establezca los mismos permisos que haya establecido para el directorio de su sitio web. De lo contrario, cuando cargue un archivo y vaya a C: \ WINDOWS \ Temp, lo moverá al directorio de su sitio web, sus permisos NO se establecerán correctamente. Esto le causará problemas si luego desea manipular ese archivo con algo así como la utilidad de conversión de ImageMagick.

Cuestiones relacionadas