Comunidad de diseño web y desarrollo en internet online

problemas subiendo imagenes a un servidor(permisos777)

Citar            
MensajeEscrito el 16 Ago 2006 03:35 pm
muy buenas compañer@s programador@s
estoy un poco hartito porque llevo ya una semana y media peinando un codigo estupido que ademas me funciona en mi pc, pero al subirlo al servidor deja de rular, os explico:

el administrador de mi web tiene que ser capaz de subir imagenes a una carpeta determinada del servidor, entonces yo todo contento me hago un script html que pide los datos y los envia a un php, dentro del cual hay una funcion que se encarga de comprobar los datos y manipularlos para al final de la funcion subir la imagen al servidor y en caso de que no se pueda hacer, da un error...lo pruebo en mi pc y todo rula a la perfeccion, me sube imagenes a donde yo quiero(en mi servidor local...) pero ete aqui que lo subo al servidor para ponerlo en funcionamiento y no rula y digo, claro, la ruta, asi que la pongo absoluta, y tampoco, luego la pongo relativa (muchas veces comprobadas las rutas...) pero tampoco rula, asi que digo, vale, los permisos de las carpetas donde voy a subir las imagenes, asi que cambio los permisos a 777, pero sigue sin funcionar, con las rutas bien puestas, la sintaxis perfecta y la version 4.3.2 del php en mi servidor que me hace lo que le pido...asi que supongo que aunque la version de php del servidor al que lo subo sea posterior...deberia de tragar con la funcion que uso...bueno, aqui viene el codigo a ver que veis...

este es el script htm(envio.htm):

Código :

<html>
<head>
<title></title>
</head>
<body>
<div align="center">
<form name="prueba" method="post" action="prueba_subir.php" enctype="multipart/form-data">
<input name="archivo" type="file">
<input name="maxsize" type="hidden" value="2097152">
<input type="submit" value="Enviar">
</form>
</div>
</body>
</html>


y aqui teneis el archivo php que se encarga de la subida(prueba_subir.php):

Código :

<?php
function subir_imagen($carpeta,$tipo,$tam,$nom_temp,$max_size)
{
   echo $carpeta."<br>".$tipo."<br>".$tam."<br>".$nom_temp."<br>".$max_size."<br>";
   if($tipo=="")
   { 
      echo "Debes incluir una imagen";
   }
   else if($tipo!="image/pjpeg" && $tipo!="image/gif" && $tipo!="image/jpeg" && $tipo!="image/png") 
   {
      print "El formato ".$tipo." no est&aacute; permitido";
   }
   else if($tam>$max_size || $tam==0) 
   {
      print "El tama&ntilde;o ".$tam." excede el l&iacute;mite de 2Mg";
   }
   else 
   {
      if ($tipo=="image/pjpeg" || $tipo=="image/jpeg")
         $extension=".jpg";
      else if ($tipo=="image/gif")
         $extension=".gif";
      else
         $extension=".png";
   
      srand();
      $ok=false;
      while(!$ok)
      {
         $numero=rand(0,9999);
         $nuevonombre="imagenes/".$carpeta."/".$numero.$extension;
         if(!file_exists($nuevonombre))
            $ok=true;
      }
      if(!move_uploaded_file($nom_temp,$nuevonombre))
         echo "error moviendo archivo :(<br>";
      else
         return $nuevonombre;
   }
}
$var=subir_imagen(prueba,$_FILES['archivo']['type'],$_FILES['archivo']['size'],$_FILES['archivo']['tmp_name'],$_POST['maxsize']);
?>


para hacer rular este codigo copiadlo en vuestro servidor en una carpeta (yo la llame prueba) y dentro de ella copiar los dos archivos (htm, php) y crear a parte una carpeta llamada imagenes, y dentro de esta otra carpeta llamada prueba y en local estoy MUY seguro de que os rulara, pero en remoto, a mi no...asi que si alguien tiene una idea...o consiga hacerlo funcionar en remoto, que me pase los archivos modificados y que pegue el codigo "bueno" como respuesta a este tema.

muchisimas gracias por adelantado
atentamente
maije :) :)

Por maije

Claber

104 de clabLevel



Genero:Masculino  

Valladolid

firefox
Citar            
MensajeEscrito el 17 Ago 2006 06:28 pm
me respondo a mi mismo para no quedarme perdido en la cola y que la gente vea mi mensaje...por favor, a ver si alguien puede ayudarme con esto..estoy desesperado y muy cabreado. llevo casi dos semanas dandole vueltas a esta MIER*A y empiezo a deprimirme en sentido literal...
gracias de antemano

Por maije

Claber

104 de clabLevel



Genero:Masculino  

Valladolid

firefox
Citar            
MensajeEscrito el 17 Ago 2006 08:17 pm
prueba el codigo con un archivo liviano, de unos cuantos kb, pues puede ser que php no este configurado para subir archivos tan pesados... Es una posibilidad, NO estoy diciendo que sea tu error

saludos

Por Maikel

BOFH

5575 de clabLevel

22 tutoriales
5 articulos

Genero:Masculino   Team Cristalab

Claber de baja indefinida

firefox
Citar            
MensajeEscrito el 18 Ago 2006 07:57 am
Habla con los de tu hosting y pregúntales si pueden revisar el código PHP, ellos muy posiblemente lo solucionen por :
- Algunos hosting bloquean ciertos permisos, por ejemplo un PHP con 777 no se ejecutaria, tendrás que ponerle uno menos "liberal" (cuestiones de seguridad), deberías de revisar el archivo y la carpeta de destino
- Capan la subida de archivos a un tamaño (por defecto son 2Mb, pero algunos lo bajan a 1Mb)

Por _CONEJO

BOFH

7639 de clabLevel

17 tutoriales
21 articulos

 

clabbrowser
Citar            
MensajeEscrito el 18 Ago 2006 02:03 pm
buenas compañer@s programador@s
en primer lugar muchisimas gracias por responder :), estaba completamente exasperado por recibir aunque fuera una respuesta
en segundo lugar y en cuanto a los archivos, el tamaño no es el problema en este caso, puesto que lo he intentado con archivos de 54 kb (tengo pocas fotos mas livianas que eso :) ) y tampoco lo sube, asi que queda descartado. he hablado varias veces con los del servidor y ellos me dicen que no tienen ningun problema subiendo archivos, y les pedi el codigo, que me pasaron en un *.rar, pero yo al probar ese codigo me dio error en local y error en remoto, asi que puede ser que el fallo tenga alguna relacion con eso, no se, quizas mi cliente ftp hace alguna cosa rara al subirlo, uso el FlashFXP.v2.0.RC2.Build.869, se que es un poco antiguo, pero siempre me habia dado buenos resultados...
en cuanto a los permisos, se que 777 es MUY liberal, pero lo modifique porque unos permisos 755 no me dejaban tampoco, y fue por estar mas quemado que "la pipa d'un indio" que lo cambie. aqui os pego el codigo de los archivos que me pasaron, que aunque me gusta mas el mio (logicamente si yo lo programo lo entiendo mejor y me parece mas bonito...:P) pero en base es lo mismo, usa la misma funcion (creo que no hay otra para copiar archivos desde el php...) y todas esas cosas...

upload.htm

Código :

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<link rel="stylesheet" type="text/css" href="../estilo.css">
<title>Gestión de archivos</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body>
<form action="subearchivo.php" method="post" enctype="multipart/form-data">
<table border="0" align="center" style="border:1px solid #FF9900">
    <input type="hidden" name="MAX_FILE_SIZE" value="512000">
    <tr><td colspan="2" align="center" background="../imagenes/fondo_tabla_verde.gif"><font size="+1" color="#FFFFFF">Transferencia de archivos de imagen</font></td></tr>
   <tr><td>&nbsp;</td></tr>
   <tr><td>&nbsp;</td></tr>
    <tr><td align="center"><b>Enviar un nuevo archivo:</b></td><td align="center"><input name="userfile" type="file"></td></tr>
   <tr><td colspan="2" align="center"><input type="submit" value="Enviar"></td></tr>
</form> 
   <tr><td>&nbsp;</td></tr>
   <tr><td colspan="2" align="center"><li><font size="-2">Se permiten archivos .gif o .jpg</font></td></tr>
   <tr><td colspan="2" align="center"><li><font size="-2">se permiten archivos de 500 KB máximo.</font></td></tr></font>
</table>
</body>
</html>


sube_archivo.php

Código :

<html>
<head>
</head>
<body>
<?php
/*//tomo el valor de un elemento de tipo texto del formulario
//$cadenatexto = $_POST["cadenatexto"];
//echo "Subiendo el archivo con el nombre: " . $cadenatexto . "...<br><br>

//datos del arhivo*/
$nombre_archivo = $HTTP_POST_FILES['userfile']['name'];
$tipo_archivo = $HTTP_POST_FILES['userfile']['type'];
$tamano_archivo = $HTTP_POST_FILES['userfile']['size'];
//compruebo si las características del archivo son las que deseo
if (!((strpos($tipo_archivo, "gif") || strpos($tipo_archivo, "jpeg")) && ($tamano_archivo < 512000))) {
    echo "La extensión o el tamaño de los archivos no es correcta. <br><br><table><tr><td><li>Se permiten archivos .gif o .jpg<br><li>se permiten archivos de 500 KB máximo.</td></tr></table>";
}else{
    if (move_uploaded_file($HTTP_POST_FILES['userfile']['tmp_name'], "../imgnoticias/$nombre_archivo")){
       //echo $HTTP_POST_FILES['userfile']['tmp_name'];
       echo $nombre_archivo;
      echo "<table border=\"0\"><tr><td align=\"center\"><img src=\"../imagenes/icono_ok.gif\"><font color=\"blue\"> El archivo ha sido cargado correctamente.</font></td></tr></table>";
    }else{
       echo "<font color=\"red\">Ocurrió algún error al subir el fichero. No pudo guardarse.</font>";
    }
}

?>
</body>
</html>


este codigo que pego aqui, supuestamente y segun los de mi servidor funciona, teniendo una carpeta llamada imgnoticias en el mismo directorio, ya sabeis...pero a mi no me funciono en local ni en remoto...mientras que el mio SI que funcionaba en local?? teneis idea de que puede pasar??

Por maije

Claber

104 de clabLevel



Genero:Masculino  

Valladolid

firefox

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.