2011-01-17 13 views
11

He creado un CMS de pequeña escala para un sitio web en el que estoy trabajando y tengo un formulario que carga archivos de imágenes para usar en el sitio web. Carga los archivos correctamente pero los permisos que establece no permiten que el archivo se visualice en un navegador.Cambie los permisos del archivo cargado por PHP

Aquí está mi código PHP actual para cargar los archivos

$typepath = $_POST['filetype']; 

$target_path = "../../images/uploads/".$typepath."/"; 

$target_path = $target_path . basename($_FILES['uploadedfile']['name']); 

if(move_uploaded_file($_FILES['uploadedfile']['tmp_name'], $target_path)) { 
    echo "<p>The file ". basename($_FILES['uploadedfile']['name']). 
    " has been uploaded</p>\n<p>To the directory: <span style=\"font-weight:bold;\">".substr($target_path, 6)."</span></p>"; 
} else{ 
    echo "There was an error uploading the file, please try again!"; 
} 
+0

El navegador no tiene nada que ver con los permisos de archivos. ¿Puedes contar más historias reales, preferiblemente con mensajes de error copiados? Gracias –

+0

@Col. Metralla - sí lo hace. Si el archivo no tiene permisos de lectura en el servidor, el navegador obtendrá un error '401 no autorizado'. – Spudley

+1

@Spudley es 403. Y sigue siendo un problema de ** servidor **, no del navegador uno. –

Respuesta

20

PHP Manaual chmodhttp://php.net/manual/en/function.chmod.php

chmod("/somedir/somefile", 0755); 

en su contexto;

$typepath = $_POST['filetype']; 

$target_path = "../../images/uploads/".$typepath."/"; 

$target_path = $target_path . basename($_FILES['uploadedfile']['name']); 

if(move_uploaded_file($_FILES['uploadedfile']['tmp_name'], $target_path)) { 
    chmod($target_path, 0755); 
    echo "<p>The file ". basename($_FILES['uploadedfile']['name']). 
    " has been uploaded</p>\n<p>To the directory: <span style=\"font-weight:bold;\">".substr($target_path, 6)."</span></p>"; 
} else{ 
    echo "There was an error uploading the file, please try again!"; 
} 
+2

¡genial! Funciona un placer – Max

+1

Me alegro de poder ayudar –

+1

Sin embargo, se recomienda: el uso de chmod 755 significa que el propietario puede leer, escribir y ejecutar. El grupo ahora puede leer y escribir. "Otro" (cualquier otra persona) puede leer y escribir. Ahora, supongo que las personas no podrán ingresar al directorio, pero de ser así, podrían inyectar material dañino en sus archivos. Siempre iría por chmod 750 en su lugar. –

Cuestiones relacionadas