Problema subir archivos

Estoy desarrollando un sitio en Apache, PHP y MySql, en el que una parte puede subir archivos y se quiere que se puedan subir archivos de hasta 50MB y también poder bajarlos del mismo sitio.
El servicio de hosting que se tiene contratado es compartido así que no se puede tener acceso al php.ini y se opto por hacer un ".htaccess", este ha servido para bajar los archivos ya que antes tampoco se podía tener descargas de más de un mega. Pero ahora el problema se centra al subir los archivos al sitio, ya que al subirlos después de un tiempo el formulario se reinicia y no sube el archivo. Esto sucede con archivos de más de 10 MB.
A continuación pongo el contenido de mi archivo ".htaccess" que hasta puede parecer exagerado pero ya se intento con otros parámetros y sigue sucediendo lo mismo:
<IfModule mod_php4.c>
php_value memory_limit 128M
php_value post_max_size 200M
php_value upload_max_filesize 200M
php_value max_execution_time 20000
php_value max_input_time 20000
</IfModule>
Ojala y me puedas orientar de cómo puedo configurar mi sitio para poder subir mis archivos por medio de mi formulario.
De antemano te doy las gracias por la atención a mi petición y quedo a la disposición para más información y a la espera de cualquier respuesta.

23 Respuestas

Respuesta
1
No se cual es el problema del reinicio del formulario, quizá sea el timeout.
¿Tienes puestas las cabeceras para evitar ese problema en el script que recibe el archivo?
Cabeceras (colocar al principio):
ignore_user_abort(); //Evitar que la sesion se cuelgue en Time Out
set_time_limit(0); //Evita error time Out
Hola, disculpa la tardanza en responder pero lo intente en varias formas lo que me aconsejas. Termine poniendo el siguiente codigo en mi cabecera junto con la instruccion para la conexion:
<?php
ignore_user_abort();
set_time_limit(0);
ini_set("max_input_time", "60000");
ini_set("max_execution_time", "60000");
ini_set("memory_limit", "104857600");
ini_set("upload_max_filesize", "104857600");
ini_set("post_max_size", "104857600");
require_once('../Connections/connEmpren.php'); ?>
<?php
Pero me vulve a hacer lo mismo, el envio (segun la transmicion de datos de mi conexion) si lo envia pero al querer terminar la instruccion esta se reinicia y no sube el archivo. Ojala y me puedas dar alguna otra orientacion, agradezco una vez mas la atencion que has mostrado.
Sería bueno que me pegaras el código que guarda el archivo temporal
Aqui te envio el codigo del formulario con que pretendo subir los archivos:
<?php
ignore_user_abort();
set_time_limit(0);
ini_set("max_input_time", "60000");
ini_set("max_execution_time", "60000");
ini_set("memory_limit", "104857600");
ini_set("upload_max_filesize", "104857600");
ini_set("post_max_size", "104857600");
require_once('../Connections/connEmpren.php'); ?>
<?php
// Load the common classes
require_once('../includes/common/KT_common.php');
// Load the tNG classes
require_once('../includes/tng/tNG.inc.php');
// Load the KT_back class
require_once('../includes/nxt/KT_back.php');
// Make a transaction dispatcher instance
$tNGs = new tNG_dispatcher("../");
// Make unified connection variable
$conn_connEmpren = new KT_connection($connEmpren, $database_connEmpren);
//Start Restrict Access To Page
$restrict = new tNG_RestrictAccess($conn_connEmpren, "../");
//Grand Levels: Level
$restrict->addLevel("0");
$restrict->Execute();
//End Restrict Access To Page
// Start trigger
$formValidation = new tNG_FormValidation();
$formValidation->addField("audio_aud", true, "", "", "", "", "");
$formValidation->addField("titulo_aud", true, "text", "", "", "", "");
$formValidation->addField("resumen_aud", true, "text", "", "", "", "");
$formValidation->addField("orden_aud", true, "numeric", "", "", "", "");
$tNGs->prepareValidation($formValidation);
// End trigger
//start Trigger_FileDelete1 trigger
//remove this line if you want to edit the code by hand
function Trigger_FileDelete1(&$tNG) {
$deleteObj = new tNG_FileDelete($tNG);
$deleteObj->setFolder("../audios/");
$deleteObj->setDbFieldName("audio_aud");
return $deleteObj->Execute();
}
//end Trigger_FileDelete1 trigger
//start Trigger_FileUpload trigger
//remove this line if you want to edit the code by hand
function Trigger_FileUpload(&$tNG) {
$uploadObj = new tNG_FileUpload($tNG);
$uploadObj->setFormFieldName("audio_aud");
$uploadObj->setDbFieldName("audio_aud");
$uploadObj->setFolder("../audios/");
$uploadObj->setMaxSize(200000);
$uploadObj->setAllowedExtensions("mp3");
$uploadObj->setRename("auto");
return $uploadObj->Execute();
}
//end Trigger_FileUpload trigger
// Make an insert transaction instance
$ins_emp_audio_aud = new tNG_multipleInsert($conn_connEmpren);
$tNGs->addTransaction($ins_emp_audio_aud);
// Register triggers
$ins_emp_audio_aud->registerTrigger("STARTER", "Trigger_Default_Starter", 1, "POST", "KT_Insert1");
$ins_emp_audio_aud->registerTrigger("BEFORE", "Trigger_Default_FormValidation", 10, $formValidation);
$ins_emp_audio_aud->registerTrigger("END", "Trigger_Default_Redirect", 99, "../includes/nxt/back.php");
$ins_emp_audio_aud->registerTrigger("AFTER", "Trigger_FileUpload", 97);
// Add columns
$ins_emp_audio_aud->setTable("emp_audio_aud");
$ins_emp_audio_aud->addColumn("idnot_aud", "NUMERIC_TYPE", "VALUE", "{GET.id_not}");
$ins_emp_audio_aud->addColumn("fecha_aud", "DATE_TYPE", "VALUE", "{NOW_DT}");
$ins_emp_audio_aud->addColumn("audio_aud", "FILE_TYPE", "FILES", "audio_aud");
$ins_emp_audio_aud->addColumn("titulo_aud", "STRING_TYPE", "POST", "titulo_aud");
$ins_emp_audio_aud->addColumn("resumen_aud", "STRING_TYPE", "POST", "resumen_aud");
$ins_emp_audio_aud->addColumn("orden_aud", "NUMERIC_TYPE", "POST", "orden_aud", "1");
$ins_emp_audio_aud->setPrimaryKey("id_aud", "NUMERIC_TYPE");
// Make an update transaction instance
$upd_emp_audio_aud = new tNG_multipleUpdate($conn_connEmpren);
$tNGs->addTransaction($upd_emp_audio_aud);
// Register triggers
$upd_emp_audio_aud->registerTrigger("STARTER", "Trigger_Default_Starter", 1, "POST", "KT_Update1");
$upd_emp_audio_aud->registerTrigger("BEFORE", "Trigger_Default_FormValidation", 10, $formValidation);
$upd_emp_audio_aud->registerTrigger("END", "Trigger_Default_Redirect", 99, "../includes/nxt/back.php");
$upd_emp_audio_aud->registerTrigger("AFTER", "Trigger_FileUpload", 97);
// Add columns
$upd_emp_audio_aud->setTable("emp_audio_aud");
$upd_emp_audio_aud->addColumn("idnot_aud", "NUMERIC_TYPE", "CURRVAL", "");
$upd_emp_audio_aud->addColumn("fecha_aud", "DATE_TYPE", "CURRVAL", "");
$upd_emp_audio_aud->addColumn("audio_aud", "FILE_TYPE", "FILES", "audio_aud");
$upd_emp_audio_aud->addColumn("titulo_aud", "STRING_TYPE", "POST", "titulo_aud");
$upd_emp_audio_aud->addColumn("resumen_aud", "STRING_TYPE", "POST", "resumen_aud");
$upd_emp_audio_aud->addColumn("orden_aud", "NUMERIC_TYPE", "POST", "orden_aud");
$upd_emp_audio_aud->setPrimaryKey("id_aud", "NUMERIC_TYPE", "GET", "id_aud");
// Make an instance of the transaction object
$del_emp_audio_aud = new tNG_multipleDelete($conn_connEmpren);
$tNGs->addTransaction($del_emp_audio_aud);
// Register triggers
$del_emp_audio_aud->registerTrigger("STARTER", "Trigger_Default_Starter", 1, "POST", "KT_Delete1");
$del_emp_audio_aud->registerTrigger("END", "Trigger_Default_Redirect", 99, "../includes/nxt/back.php");
$del_emp_audio_aud->registerTrigger("AFTER", "Trigger_FileDelete1", 98);
// Add columns
$del_emp_audio_aud->setTable("emp_audio_aud");
$del_emp_audio_aud->setPrimaryKey("id_aud", "NUMERIC_TYPE", "GET", "id_aud");
// Execute all the registered transactions
$tNGs->executeTransactions();
// Get the transaction recordset
$rsemp_audio_aud = $tNGs->getRecordset("emp_audio_aud");
$row_rsemp_audio_aud = mysql_fetch_assoc($rsemp_audio_aud);
$totalRows_rsemp_audio_aud = mysql_num_rows($rsemp_audio_aud);
?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Documento sin título</title>
<link href="../includes/skins/mxkollection3.css" rel="stylesheet" type="text/css" media="all" />
<script src="../includes/common/js/base.js" type="text/javascript"></script>
<script src="../includes/common/js/utility.js" type="text/javascript"></script>
<script src="../includes/skins/style.js" type="text/javascript"></script>
<?php echo $tNGs->displayValidationRules();?>
<script src="../includes/nxt/scripts/form.js" type="text/javascript"></script>
<script src="../includes/nxt/scripts/form.js.php" type="text/javascript"></script>
<script type="text/javascript">
$NXT_FORM_SETTINGS = {
duplicate_buttons: true,
show_as_grid: true,
merge_down_value: false
}
</script>
<link href="../css/empren.css" rel="stylesheet" type="text/css" />
<style type="text/css">
<!--
#capa {
position:absolute;
z-index:1;
}
-->
</style>
</head>
<body>
<div id="capa">
<?php
echo $tNGs->getErrorMsg();
?>
<div class="KT_tng">
<h1 class="Titulo">
<?php
// Show IF Conditional region1
if (@$_GET['id_aud'] == "") {
?>
<?php echo NXT_getResource("Insert_FH"); ?>
<?php
// else Conditional region1
} else { ?>
<?php echo NXT_getResource("Update_FH"); ?>
<?php }
// endif Conditional region1
?>
Audio de Nota </h1>
<div class="KT_tngform">
<form method="post" id="form1" action="<?php echo KT_escapeAttribute(KT_getFullUri()); ?>" enctype="multipart/form-data">
<?php $cnt1 = 0; ?>
<?php do { ?>
<?php $cnt1++; ?>
<?php
// Show IF Conditional region1
if (@$totalRows_rsemp_audio_aud > 1) {
?>
<h2><?php echo NXT_getResource("Record_FH"); ?> <?php echo $cnt1; ?></h2>
<?php }
// endif Conditional region1
?>
<table width="100" border="0" cellpadding="2" cellspacing="2" class="KT_tngtable">
<tr>
<td class="KT_th"><label for="audio_aud_<?php echo $cnt1; ?>">Audio:</label></td>
<td bgcolor="#CCFF88"><input type="file" name="audio_aud_<?php echo $cnt1; ?>" id="audio_aud_<?php echo $cnt1; ?>" size="32" />
<?php echo $tNGs->displayFieldError("emp_audio_aud", "audio_aud", $cnt1); ?> </td>
</tr>
<tr>
<td class="KT_th"><label for="titulo_aud_<?php echo $cnt1; ?>">Titulo:</label></td>
<td bgcolor="#CCFF88"><input type="text" name="titulo_aud_<?php echo $cnt1; ?>" id="titulo_aud_<?php echo $cnt1; ?>" value="<?php echo KT_escapeAttribute($row_rsemp_audio_aud['titulo_aud']); ?>" size="32" />
<?php echo $tNGs->displayFieldHint("titulo_aud");?> <?php echo $tNGs->displayFieldError("emp_audio_aud", "titulo_aud", $cnt1); ?> </td>
</tr>
<tr>
<td class="KT_th"><label for="resumen_aud_<?php echo $cnt1; ?>">Resumen:</label></td>
<td bgcolor="#CCFF88"><textarea name="resumen_aud_<?php echo $cnt1; ?>" id="resumen_aud_<?php echo $cnt1; ?>" cols="50" rows="5"><?php echo KT_escapeAttribute($row_rsemp_audio_aud['resumen_aud']); ?></textarea>
<?php echo $tNGs->displayFieldHint("resumen_aud");?> <?php echo $tNGs->displayFieldError("emp_audio_aud", "resumen_aud", $cnt1); ?> </td>
</tr>
<tr>
<td class="KT_th"><label for="orden_aud_<?php echo $cnt1; ?>">Orden:</label></td>
<td bgcolor="#CCFF88"><input type="text" name="orden_aud_<?php echo $cnt1; ?>" id="orden_aud_<?php echo $cnt1; ?>" value="<?php echo KT_escapeAttribute($row_rsemp_audio_aud['orden_aud']); ?>" size="4" />
<?php echo $tNGs->displayFieldHint("orden_aud");?> <?php echo $tNGs->displayFieldError("emp_audio_aud", "orden_aud", $cnt1); ?> </td>
</tr>
</table>
<input type="hidden" name="kt_pk_emp_audio_aud_<?php echo $cnt1; ?>" class="id_field" value="<?php echo KT_escapeAttribute($row_rsemp_audio_aud['kt_pk_emp_audio_aud']); ?>" />
<?php } while ($row_rsemp_audio_aud = mysql_fetch_assoc($rsemp_audio_aud)); ?>
<div class="KT_bottombuttons">
<div>
<?php
// Show IF Conditional region1
if (@$_GET['id_aud'] == "") {
?>
<input type="submit" name="KT_Insert1" id="KT_Insert1" value="<?php echo NXT_getResource("Insert_FB"); ?>" />
<?php
// else Conditional region1
} else { ?>
<input type="submit" name="KT_Update1" value="<?php echo NXT_getResource("Update_FB"); ?>" />
<?php }
// endif Conditional region1
?>
<input type="button" name="KT_Cancel1" value="<?php echo NXT_getResource("Cancel_FB"); ?>" onclick="return UNI_navigateCancel(event, '../includes/nxt/back.php')" />
</div>
</div>
</form>
</div>
<br class="clearfixplain" />
</div>
<p></p>
</div>
<br />
<br />
</body>
</html>
Has pegado el script de envio, pero el script destino del formulario es el que te pedia.
action="<?php echo KT_escapeAttribute(KT_getFullUri()); ?>"
Como no puedo ver los métodos de las clases, no se donde recibes $_POST y $_FILES ni como tratas despues, si el script está en otro archivo, es en este donde hay que especificar las cabeceras tambien
Respuesta
1
max_execution_time = 3600
(en segundos, calcula el tiempo de subida, 3600 = 1 hora, para 30MB me va bien con 300)
upload_max_filesize = 60M
session.gc_maxlifetime = 3600 (si estas manejando sessiones en tu formulario para subir el archivo tambien puede afectar el resultado)
El .htaccess es muy útil, sin embargo en algunos casos no asume tus valores y sigue validando el php.ini, depende de la configuración de tu proveedor.
Recomendación: Crea tu propio php.ini de acuerdo a tus especificaciones, súbelo a todas las carpetas que involucran tu aplicativo, ejemplo:
/public_html
/public_html/includes
Etc.
luego crea un archivo phpinfo.php y allí coloca:
<?
phpinfo();
?>
Abre el archivo en tu navegador: tusitio.com/phpinfo.php
Así puedes verificar si esta tomando los calores de tu php.ini
La mayoría de los hosting compartidos aceptan esto y es muy útil a la hora de tener tu propia configuración en tu hosting sin que se afecte el servidor.
Respuesta
1
Lo único que se me ocurre es que metas los valores en el propio script php. El que tiene que subir las imágenes:
ini_set("post_max_size","256M");
ini_set("upload_max_filesize","60M");
ini_set("memory_limit","256M");
ini_set("max_execution_time","9999"); // tiene que ser grandito por que subir 50Mb suele tardar bastante
ini_set("max_input_time","300");
Otra posibilidad es crear una conexión ftp pa subir esos archivos tan grandes. Mirate las funciones de ftp en www.php.net
Intentalo y me dices.
Hola, disculpa la tardanza en responder pero lo intente en varias formas lo que me aconsejas. Termine poniendo el siguiente código en mi cabecera junto con la instrucción para la conexión:
<?php
ignore_user_abort();
set_time_limit(0);
ini_set("max_input_time", "60000");
ini_set("max_execution_time", "60000");
ini_set("memory_limit", "104857600");
ini_set("upload_max_filesize", "104857600");
ini_set("post_max_size", "104857600");
require_once('../Connections/connEmpren.php'); ?>
<?php
Pero me vuelve a hacer lo mismo, el envío (según la transmisión de datos de mi conexión) si lo envía pero al querer terminar la instrucción esta se reinicia y no sube el archivo. Ojala y me puedas dar alguna otra orientación, agradezco una vez más la atención que has mostrado.
Pues a parte de lo de usar FTP, no se me ocurre nada.
Consulta con tu proveedor de hosting, por que posiblemente estén bloqueando que los usuarios puedan modificar todos o algunos de los ini_set.
Suerte
Respuesta
1
Si tienes msn agrégame [email protected], para ver más detalladamente tu hosting y ver si podemos hacer algo.
¿Va?
Respuesta
1
La causa del problema puede estar en el tiempo de ejecución del script contra el tiempo que tarda el archivo en ser enviado. Veo muy complicada la solución mediante form http.
¿Por qué no enfocas el problema desde otra perspectiva?
Estas usando el protocolo web (http) pensado para transferencias de archivos pequeños, prueba con el ftp. Si tu hosting tiene activadas las funciones de ftp puedes hacer un sencillo script para esta tarea.
Aquí te dejo un pequeño tutorial que puede ayudarte:
http://www.cristalab.com/tutoriales/112/subir-archivos-con-php-por-ftp
Respuesta
1
Podrías ver que version de php tienes.
En php 4.2.x no reconoce el valor post_max_size dado desde el htaccess.
Mi servidor tiene PHP Version 4.4.4 y si tiene la variable post_max_size en 8M
Si creas un archivo con phpinfo(); ¿Este entrega los valores originales o los modificados?
Me regresa los originales
Si ninguna de las directivas se modifico con el htaccess quiere decir que el host no soporta override de las variables de php a ese nivel.
Solo quedaría consultarle al host la posibilidad de cambiar la instancia o buscar otro proveedor que soporte eso.
Respuesta
1
Aunque pongas una configuración determinada en el htaccess, el que sigue mandando es el php.ini.
Si tu hosting no permite subir más de POR megas, no podrás hacerlo.
Alternativas: sube los archivos a otro sitio o utiliza las funciones que permite hacer FTP para subir mediante ftp los ficheros.
Respuesta
1
He visto que has contemplado también el tiempo de ejecución del script y la memoria del script. Habla con tu proveedor de hosting, seguramente tenga restricciones que no puedas saltarte. Siento no poder ayudarte
Respuesta
1
Eso que te pasa es un problema muy común, y el culpable es el navegador web, no el httaccess, que tiene más funciones de seguridad que de otra cosa. Yo probaría a instalar el mozilla, y abrir el formulario con él, a ver si deja de darte problemas.
Pero la alternativa más eficiente seria buscar la forma de subir los archivos a tu sitio mediante ftp en vez de mediante http. Habla con los administradores de tu dominio para que te den los datos necesarios para acceder mediante ftp a tu espacio web, que ya veras como así desaparecen tus problemas.
Respuesta
1
Por lo que parece el código es correcto. Deberías consultar al propietario del servidor los límites de los valores que quieres configurar, y comprobar que funcionarían. Si no es ese el problema, entonces deberías revisar el código php que ejecuta la subida, bajada y ejecución de datos en el sitio...
Respuesta
1
Por defecto php.ini deja subir archivos de hasta 2Mb. Te dejo aquí un código para ver si te funciona. Si no es así espero tu respuesta para buscar otra solución
php_value max_execution_time 0
php_value memory_limit 128M
php_value post_max_size 200M
php_value upload_max_filesize 20M
Respuesta
1
Edgardo:
Mira, tu problema más que un problema de php, es un problema de tu servidor y del proveedor del servicio de hosting y la configuración del servidor.
Ahora podrías configurar el .htacces de la siguiente manera para no tener dificultades de subida y descarga de archivos, aunque como lo has explicado anteriormente ya has probado con varias configuraciones quizá ya la hayas usado.
php_value memory_limit 1000M
php_value post_max_size 1000M
php_value upload_max_filesize 1000M
php_value max_execution_time 120
php_value max_input_time 120
Aunque como experiencia personal utilizo un .htaccess con tres líneas y a mi (caso personal, lo repito), me funciona de maravillas con archivos pequeños pero que con unas modificaciones menores puede que te funcione.
php_value upload_max_filesize 15M
php_value post_max_size 15M
php_value session_maxlifetime=3600
Aunque te recomiendo que si esto no te funciona, te comuniques con la empresa del servicio de hosting y que le presentes tu problema para que en conjunto lleguen a una solución ya que a mi parecer el problema viene de allá y no debe ser un caso tuyo o de tu sistema.
Respuesta
1
Edgardo, te cuento que estas aplicando correctamente la configuración de tu .htaccess el cual solo hace modificaciones en la configuración de PHP.
Lo que te puede estar pasando en la subida del archivo de más de 10M es que tal vez el proveedor de Hosting tenga configurada su carpeta temporal (aquella donde se almacenan los archivos subidos) para que no acepte archivos de más de 10M o bien puede ser que Apache este configurado para no recibir archivos de más de 10M. Frente a esto último no tienes forma de burlar dicha restricción ya que como te dije inicialmente con tu archivo .htaccess solo puede cambiar la configuración de PHP pero no así la de Apache o las de Directorios.
Si el proveedor no te cambia estas restricciones es difícil poder realizar las acciones que deseas hacer.
Respuesta
1
Con un compartido dudo que te dejen hacer eso.
Debes tener un servidor dedicado para tal fin, lo tienen limitado por seguridad. Eso cualquier server compartido lo hace si tienen 2 dedos de frente.
Solo que se pongan 2 o 3 personas a subir archivos de 200 MBS lo colapsan.
Un saludo, lo que necesitas es un server dedicado, y ponerle las directivas directamente en el php.ini, en este los values que has puesto la mayoría deben estar deshabiliados para su manipulación por htaccess.
Saludos, si te ha servido de ayuda dejame las estrellitas.
Respuesta
1
Debes asegurarte que el archivo se encuentre en la carpeta root de tu carpeta publica.
A la vista, el archivo está bien creado.
Es posible que la configuración de apache no permita la ejecución de archivos htaccess. Aun que si dices que si funcionó con la descarga, me parece extraño.
Claramente el problema está en el tiempo en que el servidor espera que se haga la transferencia.
Averiguaré más al respecto y ante cualquier novedad te aviso.
Respuesta
1
Ojala tengas acceso al formulario php que genera el Upload del archivo, puede que el método que estén empleando sea el (move_uploaded_file), este es limitado por que depende de los permisos y configuración de una carpeta temporal que lo maneja generalmente el Hosting.
Te recomiendo que pruebes la carga y descarga del archivo por Métodos FTP usando una cuenta que hayas creado por tu panel de Hosting, verificando que cumpla con la capacidad que necesitas desde esa configuración de cuenta.
MIre el archivo htaccess, y aparte delo exgerado de los valores no vi nada extraño,
No anexo aun nada de código hasta que primero verifiquez la información y requieras algo más puntual..
Espero que esto sea de ayuda... HAsta la próxima
Misael Andrey Albañil S
Ing. Desarrollo
COL-Bog
Respuesta
1
Bueno en realidad estas limitado a lo que te pueda ofrecer el hosting donde tienes los archivos, si no puedes controlar el apache directamente es difícil. Sin embargo, puedes empezar enviándome la configuración del servidor, has un script que contenga el código
<?php
phpinfo();
?>
Y me envías el resultado bien sea por la pag web o por archivo. Es posible que hayan restricciones en el mismo servidor apache, podrías averiguar con tu proveedor de hosting. Lo otro que puedes hacer para que se suban archivos es usar un servicio público de FTP, también puedes averiguar si el hosting lo permite, o en su defecto usar cuentas de FTP.
Aquí te envío la página de mi configuración:
http://emprendaria.com/info.php
Gracias, seguimos en contacto.
La linea del phpinfo
post_max_size 8M 8M
Por más que expandas el parámetro en el htaccess, la configuración del sistema lo va a restringir a 8MB, ese es el máximo tamaño para subir archivos usando el método post.
Una opción que tienes para contrarrestar este límite es comprimiendo la información antes que la envíes, o como te decía, usando otros protocolos, como por ejemplo el ftp.
Hablamos!
Respuesta
1
Lo que pasa que generalmente PHP esta configurado para subir como máximo 2MB y también que el script se detiene en un máximo de tiempo, tu solución es editar el archivo de configuración php.ini para dar los permisos necesarios.
Respuesta
1
Prueba con esto:
php_value upload_max_filesize 67107840
php_value post_max_size 67107840
(Si no te funcionase eso, tendrías que hablar con los del servidor para que modifiquen los flags del php.ini)
Suerte
Respuesta
1
php_value max_execution_time 20000
php_value max_input_time 20000
Estas líneas hacen que tras 20, o 200 segundos (no estoy seguro) se cancele la operación solicitada. Intenta ponerlas en 0 o -1 para determinar tiempo infinito.
Respuesta
1
En mi experiencia no es posible ni conveniente subir archivos de ese tamaño a través de un formulario, ya que aunque le pudieras subir el tamaño al "upload_max_fileze" no te subiría(al menos yo lo trate y no me funciono), la solución a tu problema podría ser.
1- Tratas de zipear el archivo y después lo subes, tal vez así te reduce de tamaño. Aquí te dejo un link de como zipear con php
http://blog.unijimpe.net/category/php/page/3/
2- Podrías subirlo mejor con FTP tal vez de esta forma puedas resolver tu problema.
3- Creo que MySQL tiene un campo tipo BLOB donde puedes guardar archivos, esta solución, por supuesto, te restaría performance a tu BD, y ademas creo que solo puede guardar hasta 4MB.
4- Te dejo un link donde hablan sobre la configuración de las variables que tu has configurado, creo que hay una que se llama post_max_size que quizá tu no has considera.
http://www.developershome.com/wap/wapUpload/wap_upload.asp?page=php2
Espero te ayuden mis ideas y pueda continuar ayudándote en lo que este a mi alcance.
Voy a probar lo que me aconsejas y también me estoy inclinando por la transmisión vía ftp. Aprecio mucho todo lo que me has apoyado, gracias.
Respuesta
1
Debes de tratar de saber cual es el maxq te permite el apache, con el phpinfo podrás ver el valor de estas varaibles.
Me marca 8mb
Ese es el problema, el hosting que tienes no permite subir archivos grandes. Debes de hablar con ellos a ver si te permiten o que modifiquen ese valor
Respuesta
1
Perdona no haberte contestado antes... pero hasta hoy no he visto tu mensaje.
¿En el formulario no limitas el máximo de peso de los ficheros?.
Es de perogrullo... ¿pero en el sitio te queda suficiente espacio?
Por lo que dices, estoy suponiendo que utilizas el protocolo HTTP para subir los ficheros. Creo que resulta más eficiente trabajar con el protocolo FTP. En http://es.php.net/manual/es/ref.ftp.php  tienes detallado como hacerlo.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas