Foros del Web » Programando para Internet » PHP »

Problema al subir archivos pesados por FTP

Estas en el tema de Problema al subir archivos pesados por FTP en el foro de PHP en Foros del Web. Buenas. Estoy liado con el tema de subir archivos al servidor mediante formularios php. Pensé que lo había conseguido utilizando ftp_put(), pero resulta que si ...
  #1 (permalink)  
Antiguo 28/12/2005, 11:17
Avatar de franquero  
Fecha de Ingreso: julio-2005
Mensajes: 179
Antigüedad: 12 años, 5 meses
Puntos: 1
Problema al subir archivos pesados por FTP

Buenas.

Estoy liado con el tema de subir archivos al servidor mediante formularios php. Pensé que lo había conseguido utilizando ftp_put(), pero resulta que si bien sube correctamente los archivos, aquellos que son muy pesados (3MB) los crea en el directorio correspondiente con un peso de 0 bytes. Es decir, al subir un archivo .rar y teclear su dirección en el navegador, no da error de página no encontrada, sino que muestra una página en blanco. Y al acceder con el programa FTP Filezilla muestra que el archivo está en el directorio pero con un tamaño de 0 bytes (esto cuando los archivos pesan más de 1MB)

Cuando los archivos son menos pesados sí los sube correctamente.

He mirado la configuración de mi php con phpinfo(), pero lo único que he visto (no entiendo demasiado) que pueda tener relación es post_max_size, en el que pone 55M.
Si alguien sabe cómo mirar el límite de tamaño de los archivos que se suben por FTP, y en caso de que así fuera, cómo modificarlo estaría muy agradecido

Aquí les dejo mi script para que le echen un vistazo. No he comentado todavía que cuando se sube un archivo se insertan datos en una base mysql, para luego poder tener una tabla que liste los archivos y haga un enlace a cada uno.

Código PHP:
<?php
//Los datos se reciben desde un formulario html
//Comprobamos que los datos recibidos son correctos
    
$errores = array();

    if (
strlen(trim($_POST['nombre_servidor'])) < 5) {
        
$errores[] = 'Escriba el nombre con el que se subirá el archivo al servidor (mínimo 5 caracteres)<br>';
    }
    if (
strlen(trim($_POST['descripcion'])) < 5) {
        
$errores[] = 'Escriba la descripción del archivo (mínimo 5 caracteres)<br>';
    }
    if (!
$_POST['seccion']) {
        
$errores[] = 'Elija una sección en la que ubicar el archivo<br>';
    }
    if (!
$_FILES['source_file']['name']) {
        
$errores[] = 'Seleccione el archivo que desea subir<br>';
    } 
    if (
$errores) {
        foreach (
$errores as $err) {
            print 
"Error: $err<br>";
        }
        print 
"<a href=\"javascript:history.back()\">Atrás</a>";
    } else { 
// ELSE PRINCIPAL

        // ********** CONECTAMOS CON EL SERVIDOR ***************** \\
         
$ftp_server='ftp.tuservidor.com';//serverip
         
$conn_id ftp_connect($ftp_server);
           
// login with username and password
           
$user="tu_usuario";
           
$passwd="tu_clave";
           
$login_result ftp_login($conn_id$user$passwd);

                
// Verificamos la conexión
                
if ((!$conn_id) || (!$login_result)) {
                   echo 
"La conexión FTP ha fallado";
                   die;
               } else {
                   echo 
"<br>Conectado a $ftp_server, para el usuario $user<br>";
                   }
                    
//Llegamos hasta el directorio en el que queremos guardar el archivo
                      
ftp_chdir($conn_id"public_html");
                    
ftp_chdir($conn_id"descargas");
                    
ftp_chdir($conn_id$_POST['seccion']);
    
                  
// ****** FUNCIÓN PARA SUBIR ARCHIVOS *********** \\
                
function subir($conexion_ftp$destination_file$source) {   
                    
// subir el archivo
                    
$upload ftp_put($conexion_ftp$destination_file$sourceFTP_BINARY);

                        
// check upload status
                        
if (!$upload) {
                           echo 
"Ha fallado la subida del archivo: $destination_file";
                        } else {
                           echo 
"<b>$destination_file</b> se ha subido correctamente a <b>$ftp_server</b> al directorio <b>/descargas/$_POST[seccion]</b>";
                           
//Incluimos los datos del archivo subido en la base de datos
                        
$conec mysql_connect("localhost""usuario""clave");
                        
mysql_select_db("base_de_datos"$conec);
                            
//Insertamos en la tabla el nombre, el peso, el archivo y la sección
                            
$sql mysql_query("INSERT INTO archivos_descarga (nombre,descripcion,seccion) VALUES     ('$_POST[nombre_servidor]','$_POST[descripcion]','$_POST[seccion]')"$conec);
                                
//cerramos la conexion MYSQL
                                
mysql_close($conec);
                        }
                } 
//final de subir()

                    //Subimos el archivo
                    
subir($conn_id$_POST['nombre_servidor'], $source_file);  
                        
//Cerramos la conexión FTP
                    
ftp_close($conn_id);
    } 
// FINAL DE ELSE PRINCIPAL
?>
Espero que me podáis echar una mano.
Saludos y Feliz año nuevo a todos
__________________
Es una suerte que la sociedad libre sea más productiva, porque de no haberlo sido jamás se habría tolerado.

Última edición por franquero; 03/08/2006 a las 01:37
  #2 (permalink)  
Antiguo 28/12/2005, 11:31
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Tienes un montón de directivas de php.ini relacionadas con las limitaciones que PHP (y hasta APache si lo usas como servidor HTTP) podrían imponer.

Recuera que si bien "mueves" tu archivo por FTP (protocolo) el archivo sigue subiendo por "HTTP" por médio de PHP bajo tu scritp PHP.

Revisa esta FAQ al respecto:
http://www.forosdelweb.com/showpost....&postcount=146

Un saludo,
  #3 (permalink)  
Antiguo 28/12/2005, 16:50
 
Fecha de Ingreso: septiembre-2003
Ubicación: Sentado frente a un computador
Mensajes: 191
Antigüedad: 14 años, 3 meses
Puntos: 0
revisaste las variables de maxima subida
revisa max_file_upload en el php.ini
  #4 (permalink)  
Antiguo 11/01/2006, 02:33
Avatar de franquero  
Fecha de Ingreso: julio-2005
Mensajes: 179
Antigüedad: 12 años, 5 meses
Puntos: 1
Buenas,
he cambiado las siguientes directivas y mi script funciona perfectamente, sube archivos de todos los tamaños:

- max_execution_time
- memory_limit
- post_max_size
- upload_max_filesize

Gracias por vuestra ayuda. ;)
__________________
Es una suerte que la sociedad libre sea más productiva, porque de no haberlo sido jamás se habría tolerado.
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 04:32.