Foros del Web » Programando para Internet » PHP »

Problema al subir archivos al servidor.

Estas en el tema de Problema al subir archivos al servidor. en el foro de PHP en Foros del Web. Buenas tardes. Antes de nada decir que soy nuevo en el foro, y que gracias a este foro, he aprendido lo poco que sé de ...
  #1 (permalink)  
Antiguo 14/03/2008, 09:46
Avatar de alucardh  
Fecha de Ingreso: marzo-2008
Mensajes: 7
Antigüedad: 16 años, 1 mes
Puntos: 0
Problema al subir archivos al servidor.

Buenas tardes.

Antes de nada decir que soy nuevo en el foro, y que gracias a este foro, he aprendido lo poco que sé de php.
Pero aquí viene mi primer tropiezo con dicha programación.

El problema es el siguiente:

He hecho un script para subir archivos al servidor, el cual funciona correctamente pero solo con determinados archivos, por ejemplo los .txt y los .zip, los sube bien, pero los .rar y los .pdf no. Pego el código a continuación. (El código está en catalàn, però solo hace falta seguir el nombre de las variables).

El formulario: form_files.php

Código:
<fieldset>
<legend>Pujar fitxers.</legend>
<form action="upload_files.php" method="post" enctype="multipart/form-data">
<p><label for="arxiu">Arxiu: </label><input name="arxiu" id="arxiu" type="file" /></p>
<p><label for="cat">Categoria: </label><select name="cat" id="cat"><option>Apunts</option><option>Manuals</option><option>Tutorials</option></select></p>
<p><input type="submit" name="pujar" id="pujar" value="Pujar" /></p> 
</form>
</fieldset>
El Script: form_upload.php
Código:
<?php
$name=$_FILES['arxiu']['name']; 
$type=$_FILES['arxiu']['type']; 
$size= $_FILES['arxiu']['size'];
$cat=$_POST['cat'];
echo "<p><strong>Nom :</strong> $name</p>"; 
echo "<p><strong>Format :</strong> $type</p>"; 
echo "<p><strong>Tamany :</strong> $size bytes</p>";
echo "<p><strong>Categoria :</strong> $cat</ps>";
if ($cat == Apunts)
{
$uploaddir = '/var/www/ragnarok/recursos/apunts/'; 
$uploadfile = $uploaddir . basename($_FILES['arxiu']['name']); 
if (move_uploaded_file($_FILES['arxiu']['tmp_name'],$uploadfile)) 
{ 
echo "<p>L'arxiu $name s'ha pujat correctament al directori : $uploaddir</p>"; 
} 
else 
{ 
echo "<p>No s'ha pujat l'arxiu $name correctament.</p>"; 
}
}
elseif ($cat == Manuals)
{
$uploaddir = '/var/www/ragnarok/recursos/manuals/'; 
$uploadfile = $uploaddir . basename($_FILES['arxiu']['name']); 
if (move_uploaded_file($_FILES['arxiu']['tmp_name'],$uploadfile)) 
{ 
echo "<p>L'arxiu $name s'ha pujat correctament al directori : $uploaddir</p>"; 
} 
else 
{ 
echo "<p>No s'ha pujat l'arxiu $name correctament.</p>"; 
}
}
else
{
$uploaddir = '/var/www/ragnarok/recursos/tutorials/'; 
$uploadfile = $uploaddir . basename($_FILES['arxiu']['name']); 
if (move_uploaded_file($_FILES['arxiu']['tmp_name'],$uploadfile)) 
{ 
echo "<p>L'arxiu $name s'ha pujat correctament al directori : $uploaddir</p>"; 
} 
else 
{ 
echo "<p>No s'ha pujat l'arxiu $name correctament.</p>"; 
}
}
?>
Bien, si alguno tiene idea de porqué puedo subir un tipo de archivos y otros no, lo agradecería sumamente.

El directorio dónde se sube los archivos tiene permisos para hacer cualquier cosa.

Gracias por adelantado.

Un saludo.
  #2 (permalink)  
Antiguo 14/03/2008, 09:55
Avatar de quinqui  
Fecha de Ingreso: agosto-2004
Ubicación: Chile!
Mensajes: 776
Antigüedad: 19 años, 8 meses
Puntos: 56
Re: Problema al subir archivos al servidor.

Holas alucardh

La verdad, revisando el código, no se ve nada raro, lo raro es lo que cuentas: ¿por qué unos sí y otros no?

Lo único que puedo pensar ahora es que el servidor en sí tenga bloqueado guardar archivos de tal o cual tipo en él (si es que eso es posible, claro).
__________________
pipus.... vieeeeeji plomius!!!
*quinqui site*
  #3 (permalink)  
Antiguo 14/03/2008, 10:13
Avatar de alucardh  
Fecha de Ingreso: marzo-2008
Mensajes: 7
Antigüedad: 16 años, 1 mes
Puntos: 0
Re: Problema al subir archivos al servidor.

Saludos de nuevo.

Acabo de dar con el error, no creí que fuera eso, pero así ha sido.
Resulta que depende del tamaño no me deja subir archivos. Voy a buscar como darle más capacidad a los archivos que subo.

He hecho la prueba subiendo un txt, en varios formatos, y me dejaba, a la que subía un archivo un poco grand +2Mb, no me dejaba.

Me vereís más por aquí, ya que para practicar con PHP, me estoy haciendo un sitio web con diferentes funcionalidades ... así aprendo un poco.

Mi próximo objetivo es el restringir el panel de control. El sistema de usuarios basicamente, empezaré por lo fácil, que haya solo el usuario administrador.

De momento todos los sistemas que he probado me dan error con lo mismo, el tema de los headers ... ya sea con cookies o por sesiones.

Ya os contaré.

Un saludo.
  #4 (permalink)  
Antiguo 14/03/2008, 10:24
Avatar de quinqui  
Fecha de Ingreso: agosto-2004
Ubicación: Chile!
Mensajes: 776
Antigüedad: 19 años, 8 meses
Puntos: 56
Re: Problema al subir archivos al servidor.

Uh, sí, eso suele ocurrir a menudo (lo del tamaño máximo de subida), lo olvidé por completo xD jajaja....

Para cambiar eso debes meterte en el php.ini, creo, en un parámetro que se llama algo de upload_tmp_size o algo así :P
Suerte!
__________________
pipus.... vieeeeeji plomius!!!
*quinqui site*
  #5 (permalink)  
Antiguo 14/03/2008, 10:29
Avatar de alucardh  
Fecha de Ingreso: marzo-2008
Mensajes: 7
Antigüedad: 16 años, 1 mes
Puntos: 0
Re: Problema al subir archivos al servidor.

Saludos compañero,

pues en eso ando, estoy revisando el foro, con indicaciones sobre este tema, pero tengo el UPLOAD_MAX_FILESIZE en 8M, el post_max_size en 8M, el memory_limit en 128M y siguen sin subirme archivos un poco grandes.

Voy a probar de poner el campo oculto, de MAX_FILE_SIZE en el formulario, a ver si así va, aunque no he entendido muy bien que hace este "hack" porqué están en inglés lo que he encontrado y no lo he entendido muy bien.

Saludos.
  #6 (permalink)  
Antiguo 14/03/2008, 10:31
Avatar de quinqui  
Fecha de Ingreso: agosto-2004
Ubicación: Chile!
Mensajes: 776
Antigüedad: 19 años, 8 meses
Puntos: 56
Re: Problema al subir archivos al servidor.

De pronto el tiempo que demora en subir el archivo es el que te molesta ahora: también en el php.ini creo que está el parámetro, parece que se llama timeout o algo así ^^U. Generalmente viene a 30 segundos, si lo subes a unos minutos tal vez te sirva :P
__________________
pipus.... vieeeeeji plomius!!!
*quinqui site*
  #7 (permalink)  
Antiguo 14/03/2008, 10:57
Avatar de alucardh  
Fecha de Ingreso: marzo-2008
Mensajes: 7
Antigüedad: 16 años, 1 mes
Puntos: 0
Re: Problema al subir archivos al servidor.

Saludos de nuevo.

Para este tema no encuentro solución, lo único que puede ser, es que creo que tengo el php instalado como CGI, que aún no sé muy bien que quiere decir. Pero he visto que había problemas con este tipo de instalación.

Voy a informarme sobre el tema, a ver que puedo hacer. Creo que el tema de los errores de los headers ... también viene por esto.

Salut!.
  #8 (permalink)  
Antiguo 14/03/2008, 12:12
Avatar de jaronu  
Fecha de Ingreso: febrero-2008
Mensajes: 2.183
Antigüedad: 16 años, 2 meses
Puntos: 52
Re: Problema al subir archivos al servidor.

Creo que estos son los parametros que has de cambiar en el php.ini

Cita:
file_uploads = On // en On

max_execution_time = 500 // los segundos que consideren

max_input_time = 500// los segundos que consideren

memory_limit = 50M // por lo regular el mismo tamaño del archivo a subir o quizas mas

upload_tmp_dir = /xyz // su directorio temporal con permisos de R/W

post_max_size = 50M // el tamaño maximo de su archivo a subir

upload_max_filesize = 50M // el tamaño maximo de su archivo a subir
  #9 (permalink)  
Antiguo 14/03/2008, 12:30
Avatar de alucardh  
Fecha de Ingreso: marzo-2008
Mensajes: 7
Antigüedad: 16 años, 1 mes
Puntos: 0
Re: Problema al subir archivos al servidor.

Saludos,

con esto sigo igual ... ya lo tenía configurado, con otros valores, pero configurado bien. Una cosa, el archivo /etc/apache2/httpd.conf podrías decirme que tenéis dentro ?, porqué yo lo tengo vacío ... y podría ser por esto.

A ver si alguien me puede pegar lo que tiene en él.

Gracias.

Salut!.
  #10 (permalink)  
Antiguo 14/03/2008, 12:42
Avatar de jaronu  
Fecha de Ingreso: febrero-2008
Mensajes: 2.183
Antigüedad: 16 años, 2 meses
Puntos: 52
Re: Problema al subir archivos al servidor.

No uso apache, es que trabajo directamente en el server.

Yo uso este codigo para subir archivos a una carpeta del server, pruebalo a ver si te los sube.


Código PHP:

<?php 
if (isset($_POST['submit'])) {  
    if(
is_uploaded_file($_FILES['fichero']['tmp_name'])) {
    
    
     
// me verifica haya sido cargado el archivo 
        
$ruta_destino "../carpeta/carpeta/";
        if(
move_uploaded_file($_FILES['fichero']['tmp_name'], $ruta_destino $_FILES['fichero']['name'])) { // se coloca en su lugar final 
                    
echo "<b>Upload exitoso!. Datos:</b><br>"
            echo 
"Nombre: <i><a href=\"".$ruta_destino $_FILES['fichero']['name']."\">".$_FILES['fichero']['name']."</a></i><br>"
            echo 
"Tipo MIME: <i>".$_FILES['fichero']['type']."</i><br>"
                    echo 
"Peso: <i>".$_FILES['fichero']['size']." bytes</i><br>"
                        echo 
"<br><hr><br>"
                        

// Aqui es donde tendre que insertar en la BD la variable $_FILES['fichero']['name']

                 
        

    } 
 
// A continuación el formulario 
}
?>
<body>
<form action="<?php echo $_SERVER['PHP_SELF'?>" method="post" enctype="multipart/form-data"> 
    <p>Archivo: 
      <input name="fichero" type="file" size="150" maxlength="150"> 
      <br> 
      Nombre: 
      <input name="nombre_archivo" type="text" size="70" maxlength="70">
      <br> 
      Descripcion: 
      <input name="description" type="text" size="100" maxlength="250">
    </p>
    <p>Categoria:
      <label>
      <input type="text" name="cat" id="cat">
      </label>
      <br>
      <input name="submit" type="submit" value="Upload!">  
        </p>
</form> </body>
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 22:25.