[SOLUCIONADO] Error al subir un archivo !!

Iniciado por Diabliyo, 18 Abril 2008, 16:54 PM

0 Miembros y 2 Visitantes están viendo este tema.

Diabliyo

Hola:

Ya estuve intentando con move_uploades_file() y copy() y me sigue dando error, no logro subir la imagen :S !!!..

Primeramente les adelanto que la configuracion del PHP.INI de mi servidor es: register_globals= Off. Por lo tanto para manejar archivo subidos debo usar la variable reservada: $_FILES["var"]... El code que uso es el siguiente !!

<?php
function comprobar_extencion_imagen$extensión )
{
/*
image/jpeg Imagen JPEG, JPG
image/png Imagen PNG
image/gif Imagen GIF
*/

if( !strpos$extensión"jpg" ) && !strpos$extensión"jpeg" ) && !strpos$extensión"png" ) && !strpos$extensión"gif" ) )
{
echo "Tipo de extensión/archivo inaceptable.<br>";
return 0;
}
return 1;
}


//... code y mas code..

//si hacemos un 'getcwd()', nos da la siguiente direccion: '/home/miuser/public_html/modulos/'
//y la carpeta de imagenes esta en: '/home/miuser/public_html/imagenes/noticias/'
$path"../imagenes/noticias/";

if( !
comprobar_extencion_imagen$_FILES["imagen_noticia_01"]["type"] ) || !move_uploaded_file$_FILES["imagen_noticia_01"]["tmp_name"], $path.$_FILES["imagen_noticia_01"]["name"] ) )
echo "Problema para subir imagenes al servidor.";


Como resultado al intento de subir la imagen dice: "Problema para subir imagenes al servidor."

Diabliyo

He puesto los permisos a: 777 y he podido subir la imagen...

shell# chmod -R 0777 imagenes/

Pero como puedo hacerle para no tener a fuerzas el permiso a: 777 y poder subir la imagen ?? y pues a la ves preservar la seguridad por cualquier File Inclusion :D !!

Que puedo hacer ???

дٳŦ٭

Cita de: Diabliyo en 18 Abril 2008, 17:02 PM
He puesto los permisos a: 777 y he podido subir la imagen...

shell# chmod -R 0777 imagenes/

Pero como puedo hacerle para no tener a fuerzas el permiso a: 777 y poder subir la imagen ?? y pues a la ves preservar la seguridad por cualquier File Inclusion :D !!

Que puedo hacer ???

Pues dale un 755 o asegura tus variables para que no te hagan rfi.


Con sangre andaluza :)


Diabliyo

#3
Cita de: Ing_Amc en 18 Abril 2008, 19:00 PM
Pues dale un 755 o asegura tus variables para que no te hagan rfi.

Sinceramente no creo que se peuda, pero intentare con 755, pero como solucion alterna a no utilizar 777, solo cambie el dueno del usuario por: apache

shell# chown -R apache imagenes/

Crees que lo realizado sea combeniente para usos futuros de la aplicacion en servidores externos ?? (vaya, otro hosting)... o sera mejor el 755 ??

bye bye

Diabliyo

Hola:

No, no se puede si se ponen los permisos a 755.

shell# chmod -R 0755 imagenes/

Creo que es un poco ovio, debido a que 755 indica:

bit r= 4
bit w= 2
bit x= 1

Los permisos 777 se constituyen por este orden de bits:
(owner)rwx = 7
(grupo)rwx = 7
(otros)rwx = 7

Los permisos 755 se constituyen por el orden de bits siguiente:

(owner)rwx = 7
(grupo)r-x = 5
(otros)r-x = 5

De modo que el programa PHP esta funcionando mediante la ejecucion del deamon apache (httpd), por lo tanto el user que realiza la ejecucion, interpretacion, carpetas, movimientos, etc... es el mismo usuario apache. Del mismo modos el susuario apache solo pertenece al grupo apache.

Si analizamos lo que les mencione como conclusion el usuario apache solo pdora realizar modificaciones a archivos siempre y cuando:

1- pertenezca tambien al grupo users
2- existan permisos en el directorio como: 777, 757... vaya, que los permisos para usuarios fuera del grupo del sistema (otros) este levantado el bit de 'w'...

Esa es mi logica, nose que opinen ustedes !!

bye bye

Libransser

Para tu directorio de imágenes necesitarías darle permisos 766 o 666 para que te permita escribir. En un directorio, el permiso para crear archivos en él es el de write.

Arwing

Libransser

Si tienes PHP instalado como módulo de Apache, lo más probable es que tengas que dejarlo como 766, 666, o 777. Si PHP está instalado como CGI con phpSuExec, entonces 755 te habría funcionado, pero por lo que dices no parece ser el caso, así que tendrás que probar con los primeros permisos.

Saludos
Arwing

Diabliyo

Hola:

La solucion mas viable y segura (segun mi criterio) es solamente cambiar el propietario de la carpeta donde el programa PHP va aescribir datos (chown -R apache carpeta/), ya que si dejamos los permisos en: 766 o cualquiera que deje el bit de escritura activa para OTROS (los ultimos 3 bits), este privilegio se activaria hasta para las personas que visiten el sitio y lleguen a explotar algun BUG, seria desastroso :S !!..

En cambio si se asigna el nombre de propietario de apache, se conservan los privilegios: 755, de modo que nadie puede escribir solo el OWNER y APACHE :D !!

bye bye