Foros del Web » Programando para Internet » PHP »

Warning_ POST content-lenght

Estas en el tema de Warning_ POST content-lenght en el foro de PHP en Foros del Web. Hola a todos, tengo un problema, he buscado en un libro que tengo, en google y en youtube, pero no he sabido resolver el problema, ...
  #1 (permalink)  
Antiguo 26/12/2013, 17:23
 
Fecha de Ingreso: octubre-2013
Mensajes: 62
Antigüedad: 10 años, 6 meses
Puntos: 0
Warning_ POST content-lenght

Hola a todos, tengo un problema, he buscado en un libro que tengo, en google y en youtube, pero no he sabido resolver el problema, tengo una aplicacion en donde hay una formulario para subir un archivo, al darle al submit enviar con el archivo ya cargado como es lógico me manda a la página ya indicada en el action, el problema es que si yo le envío un archivo algo pesado(103M), me da el siguiente error:
Warning: POST Content-Length of 108788637 bytes exceeds the limit of 8388608 bytes in Unknown on line 0
Ya se que es normal que me lo de por motivos de seguridad del sistema para que la gente no pueda subir archivos tan pesados, pero me gustaría que no me saltara ese error/excepción, como ya he comentado anteriormente he buscado en páginas la solución y he encontrado en varias algo parecido a esto: http://es.kioskea.net/faq/286-php-subir-archivos , he intentado copiar y pegar el codigo que pone ahi en mi archivo y sustituir donde pone "nom_du_fichier" por "$_FILES['cv']['tmp_name']", pero aún así sigue saltando el mismo mensaje, que alguien me diga que estoy haciendo mal porfavor,
Un saludo, Gonzalo
  #2 (permalink)  
Antiguo 26/12/2013, 17:37
Colaborador
 
Fecha de Ingreso: mayo-2008
Ubicación: $MX['VZ']['Xalapa']
Mensajes: 3.005
Antigüedad: 15 años, 11 meses
Puntos: 528
Respuesta: Warning_ POST content-lenght

Si tienes acceso a la configuración de php (archivo php.ini) podrías aumentar los límites configurados, o bien, si te es posible, podrías hacer los cambios en tiempo de ejecución, pero sólo si tienes acceso, en servidores gratuitos normalmente no es posible.
  #3 (permalink)  
Antiguo 26/12/2013, 17:56
 
Fecha de Ingreso: octubre-2013
Mensajes: 62
Antigüedad: 10 años, 6 meses
Puntos: 0
Respuesta: Warning_ POST content-lenght

De momento estoy trabajando en local, lo que pasa que luego si que pretendo subir la aplicación a un servidor real gratuito, entonces creo que no me será posible modificar el php.ini, que significa hacer los cambios en tiempo de ejecución?No hay ninguna otra forma de que no salte ese error? Es que no se muy bien pero tengo algo entendido de un @
  #4 (permalink)  
Antiguo 26/12/2013, 18:35
Colaborador
 
Fecha de Ingreso: mayo-2008
Ubicación: $MX['VZ']['Xalapa']
Mensajes: 3.005
Antigüedad: 15 años, 11 meses
Puntos: 528
Respuesta: Warning_ POST content-lenght

Los cambios en tiempo de ejecución son instrucciones que permiten que aunque el archivo php.ini esté configurado de cierta forma, se pueda establecer otra propiedad en un script en concreto, es útil para no aplicar los cambios a todos los scripts. Aquí tienes el ejemplo
  #5 (permalink)  
Antiguo 26/12/2013, 18:58
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 5 meses
Puntos: 977
Respuesta: Warning_ POST content-lenght

Prueba colocando la siguiente línea al inicio del archivo:

Código PHP:
Ver original 

Puedes leer más sobre el manejo de notificaciones en tiempo de ejecución desde aquí.

Saludos
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand
  #6 (permalink)  
Antiguo 27/12/2013, 07:29
 
Fecha de Ingreso: octubre-2013
Mensajes: 62
Antigüedad: 10 años, 6 meses
Puntos: 0
Respuesta: Warning_ POST content-lenght

Hola, muchas gracias por la respuesta Alexis88, pero me temo que no funciona,
Respecto a la proposición de los cambios en tiempo de ejecución parece intereante, por lo menos a nivel local, ya que me dejaría ejecutar el resto de los scripts normal, el problema estaría que en servidor real no funcionaría no?Podrías ponerme algun ejemplo un poco mñas claro porfavor?He entrado en el enlace que has escrito pero no lo entiendo mucho, mi nivel de inglés no es muy alto la verdad,
Pero muchas gracias a los dos, de verdad
  #7 (permalink)  
Antiguo 27/12/2013, 08:16
Avatar de jonni09lo
Colaborador
 
Fecha de Ingreso: septiembre-2011
Ubicación: Estigia
Mensajes: 1.471
Antigüedad: 12 años, 7 meses
Puntos: 397
Respuesta: Warning_ POST content-lenght

Cita:
Iniciado por Alexis88 Ver Mensaje
Prueba colocando la siguiente línea al inicio del archivo:

Código PHP:
Ver original 

Puedes leer más sobre el manejo de notificaciones en tiempo de ejecución desde aquí.

Saludos
Usar eso es solo un parche, está lejos de la solución del problema ya que en vez de solucionarlo lo ocultas... lo que debe de hacer es lo que dijo @ocp001a si notas error_reporting no tiene nada que ver con aumentar el tamaño máximo permitido para enviar por método POST

Saludos
__________________
Haz preguntas inteligentes-Como ser Hacker
No hacer preguntas por mensaje privado. No sólo no es inteligente sino que es egoísta.
  #8 (permalink)  
Antiguo 27/12/2013, 08:21
 
Fecha de Ingreso: octubre-2013
Mensajes: 62
Antigüedad: 10 años, 6 meses
Puntos: 0
Respuesta: Warning_ POST content-lenght

La verdad de que eso de que error_reporting(0) es un parche en vez una solución lo entiendo, pero aún así si solo es para ese error, o ese archivo, la verdad que me serviria, el problema es que aún así no funciona, porque no funciona?
  #9 (permalink)  
Antiguo 27/12/2013, 08:23
Avatar de jonni09lo
Colaborador
 
Fecha de Ingreso: septiembre-2011
Ubicación: Estigia
Mensajes: 1.471
Antigüedad: 12 años, 7 meses
Puntos: 397
Respuesta: Warning_ POST content-lenght

Cita:
Iniciado por bustamanter Ver Mensaje
La verdad de que eso de que error_reporting(0) es un parche en vez una solución lo entiendo, pero aún así si solo es para ese error, o ese archivo, la verdad que me serviria, el problema es que aún así no funciona, porque no funciona?
Si lees atentamente lo que dice @ocp001a verás que el te dió la respuesta

Cita:
Iniciado por ocp001a Ver Mensaje
Los cambios en tiempo de ejecución son instrucciones que permiten que aunque el archivo php.ini esté configurado de cierta forma, se pueda establecer otra propiedad en un script en concreto, es útil para no aplicar los cambios a todos los scripts. Aquí tienes el ejemplo
Saludos
__________________
Haz preguntas inteligentes-Como ser Hacker
No hacer preguntas por mensaje privado. No sólo no es inteligente sino que es egoísta.
  #10 (permalink)  
Antiguo 27/12/2013, 08:29
 
Fecha de Ingreso: octubre-2013
Mensajes: 62
Antigüedad: 10 años, 6 meses
Puntos: 0
Respuesta: Warning_ POST content-lenght

Si si, si eso lo he leído, y e entrado en el enlace, pero no logro entenderlo bien la verdad, mi ingles es muy básico, pero gracias de todas formas por hacermelo resaltar
  #11 (permalink)  
Antiguo 27/12/2013, 08:37
Avatar de jonni09lo
Colaborador
 
Fecha de Ingreso: septiembre-2011
Ubicación: Estigia
Mensajes: 1.471
Antigüedad: 12 años, 7 meses
Puntos: 397
Respuesta: Warning_ POST content-lenght

Cita:
Iniciado por bustamanter Ver Mensaje
Si si, si eso lo he leído, y e entrado en el enlace, pero no logro entenderlo bien la verdad, mi ingles es muy básico, pero gracias de todas formas por hacermelo resaltar
Pues con todo el respeto, o me estás tomando del pelo o eres un mentiroso empedernido el link que paso el colega está totalmente en español

Resumiendo debes de aumentar el valor de estas directivas en el php.ini

post_max_size

Y

upload_max_filesize

Si no tienes acceso a el php.ini y el soporte de tu hosting no te permite aumentar estos valores, tienes dos opciones:

Contratar otro hosting o en su defecto migrar a un plan mas alto donde te permitan estas modificaciones ó limitar el tamaño máximo del archivo que un usuario puede subir.

Saludos
__________________
Haz preguntas inteligentes-Como ser Hacker
No hacer preguntas por mensaje privado. No sólo no es inteligente sino que es egoísta.
  #12 (permalink)  
Antiguo 27/12/2013, 08:59
 
Fecha de Ingreso: octubre-2013
Mensajes: 62
Antigüedad: 10 años, 6 meses
Puntos: 0
Respuesta: Warning_ POST content-lenght

Entiendo, lo siento si te has sentido ofendido jonni09lo, la página está en español, pero es que no sabía a que parte se refería, pero si solo se refería a cambiar esas dos lineas...me temo que no me ha servido, mi problema no es que no pueda subir un archivo de gran peso, mi problema es que no quiero que lo pueda hacer nadie, se trata solo de un curriculum en formato pdf y por lo tanto no creo que nadie, por mucha edad o experiencia que tenga, pueda ocupar tanto, es por medida de seguridad, pero si solo se puede hacer eso respecto a los permisos para subir un archivo, creo que me decantaría por la opción de "parchear", pero lo he intentado y tampoco me ha funcionado, con permiso voy a subir el codigo a ver si así se me entiende mejor:
<?php
//Habilitamos variables de sesion
session_start();
error_reporting();
//Movemos el archivo subido de la carpeta temporal a la definitiva
move_uploaded_file($_FILES['cv']['tmp_name'],'upload/'.$_FILES['cv']['name'])or die('Imposible tronco!');
//Pasamos la variables de sesiones a variables simples
$nombre=$_SESSION['nombre'];
$apellidos=$_SESSION['apellidos'];
//Pasamos el nombre que recibira el archivo a una variable
$nombrearchivo=$_SESSION['nombre'].$_SESSION['apellidos'].'.pdf';
//Renombramos el archivo
rename('upload/'.$_FILES['cv']['name'],'upload/'.$nombrearchivo);
//Pasamos la dirección del archivo a una variable
$link="upload/".$nombrearchivo;
//Creamos conexión e introducimos la dirección del archivo al campo archivo
mysql_connect("localhost","root","")or die("No se pudo establecer conexión.");
mysql_select_db("curriculums")or die("No se pudo establecer conexión coin la base de datos.");
mysql_query("UPDATE curriculums SET archivo='$link' WHERE nombre='$nombre' AND apellidos='$apellidos'")or die("No se pudo subir el nombre del archivo.");
//Informamos y redirigimos al usuario a destruir sesion
echo 'Su curriculum fue enviado con éxito, gracias.';
//Redireccionamos a sessiondestroy.php
header ('Refresh: 3; URL=sessiondestroy.php');
?>

Y a siento tantas molestías, pero es que aún estoy en fase de aprendizaje y la verdad que esto de los errores y las excepciones nunca lo he entendido bien,
como se puede comprobar yo le puse la linea esa al principio, pero aún así no me funciona, sigue saliendo el mismo mensaje,
Gracias por todo, un saludo
  #13 (permalink)  
Antiguo 27/12/2013, 09:08
Avatar de jonni09lo
Colaborador
 
Fecha de Ingreso: septiembre-2011
Ubicación: Estigia
Mensajes: 1.471
Antigüedad: 12 años, 7 meses
Puntos: 397
Respuesta: Warning_ POST content-lenght

antes era yo el que me preocupaba que te molestases. Bueno yendo al grano.

Lo que dices era lo que tenías que habernos dicho al principio. Existen proyectos que verdaderamente necesitan subir archivos muy pesados al servidors así que no es raro encontrarse con ese problema. Ahora bien lo que tu quieres que limitar el peso del archivo, con esto podrías lograr lo que quieres

Para publicar código usa el Highlight del foro :ariiba:

Código PHP:
Ver original
  1. <?php
  2. //Habilitamos variables de sesion
  3. if( isset($_FILES['cv']['tmp_name']) ){ //verificamos que realmente haya algo que guardar
  4.     if( $_FILES['imagen']['size'] < 600000 ){ //limitamos el peso del archivo a no mas de 6MB por ejemplo
  5.         //Movemos el archivo subido de la carpeta temporal a la definitiva
  6.         move_uploaded_file($_FILES['cv']['tmp_name'],'upload/'.$_FILES['cv']['name'])or die('Imposible tronco!');
  7.         //Pasamos la variables de sesiones a variables simples
  8.         $nombre=$_SESSION['nombre'];
  9.         $apellidos=$_SESSION['apellidos'];
  10.         //Pasamos el nombre que recibira el archivo a una variable
  11.         $nombrearchivo=$_SESSION['nombre'].$_SESSION['apellidos'].'.pdf';
  12.         //Renombramos el archivo
  13.         rename('upload/'.$_FILES['cv']['name'],'upload/'.$nombrearchivo);
  14.         //Pasamos la dirección del archivo a una variable
  15.         $link="upload/".$nombrearchivo;
  16.         //Creamos conexión e introducimos la dirección del archivo al campo archivo
  17.         mysql_connect("localhost","root","")or die("No se pudo establecer conexión.");
  18.         mysql_select_db("curriculums")or die("No se pudo establecer conexión coin la base de datos.");
  19.         mysql_query("UPDATE curriculums SET archivo='$link' WHERE nombre='$nombre' AND apellidos='$apellidos'")or die("No se pudo subir el nombre del archivo.");
  20.         //Informamos y redirigimos al usuario a destruir sesion
  21.         echo 'Su curriculum fue enviado con éxito, gracias.';
  22.         //Redireccionamos a sessiondestroy.php
  23.         header ('Refresh: 3; URL=sessiondestroy.php');
  24.     } else{
  25.         die ("El archivo no puede pesar mas de 6MB")
  26.     }
  27. }
  28. ?>

A parte de esa validacion tambien es importante verificar que realmente es un archivo pdf u otra extension que sea permitida.

Puedes ver este tema

Saludos
__________________
Haz preguntas inteligentes-Como ser Hacker
No hacer preguntas por mensaje privado. No sólo no es inteligente sino que es egoísta.
  #14 (permalink)  
Antiguo 27/12/2013, 09:51
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 5 meses
Puntos: 977
Respuesta: Warning_ POST content-lenght

Cita:
Iniciado por jonni09lo Ver Mensaje
Usar eso es solo un parche, está lejos de la solución del problema ya que en vez de solucionarlo lo ocultas... lo que debe de hacer es lo que dijo @ocp001a si notas error_reporting no tiene nada que ver con aumentar el tamaño máximo permitido para enviar por método POST

Saludos
Bueno, lo que él pedía era ocultar la alerta, algo a lo que no le encuentro mucho sentido porque las alertas, avisan al usuario cuando ocurre algo indebido, pero ahora que finalmente explicó el propósito del presente hilo, la situación cambia totalmente.

bustamanter, te sugiero darle una leída a esto.

Saludos
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand
  #15 (permalink)  
Antiguo 30/12/2013, 09:43
 
Fecha de Ingreso: octubre-2013
Mensajes: 62
Antigüedad: 10 años, 6 meses
Puntos: 0
Respuesta: Warning_ POST content-lenght

Hola, ante todo gracias a los dos,
He copiado y pegado el código, por cierto, faltaba un punto y coma en el "die" del "else" que ya he corregido, pero sigue fallando, y la verdad que no lo entiendo, solo es posible mi intención cambiándole el tamaño máximo permitido en el php.ini? Es que claro, eso no me interesaría porque si no cuando lo suba al servidor real me va a seguir dando los mimos problemas, ¿y en el servidor real no se puede cambiar tan fácil no? Por cierto, normalmente utilizo 000webhost, pero estoy dispuesto a consejos, mientras sea gratis el hosting y subdominio... jeje
Pienso que el problema está en que limitamos el tamaño máximo del archivo, pero no el del post, no se puede limitar eso también?
Gracias, un saludo y feliz navidad
  #16 (permalink)  
Antiguo 30/12/2013, 09:47
 
Fecha de Ingreso: octubre-2013
Mensajes: 62
Antigüedad: 10 años, 6 meses
Puntos: 0
Respuesta: Warning_ POST content-lenght

Por cierto, como debería de utilizar "error_reporting()"? Creo que eso sería lo perfecto para este caso
  #17 (permalink)  
Antiguo 03/01/2014, 23:24
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 5 meses
Puntos: 977
Respuesta: Warning_ POST content-lenght

Cita:
Iniciado por bustamanter Ver Mensaje
Por cierto, como debería de utilizar "error_reporting()"? Creo que eso sería lo perfecto para este caso
Código PHP:
Ver original 
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand
  #18 (permalink)  
Antiguo 04/01/2014, 12:53
 
Fecha de Ingreso: octubre-2013
Mensajes: 62
Antigüedad: 10 años, 6 meses
Puntos: 0
Respuesta: Warning_ POST content-lenght

Gracias, Alexis, pero no entiendo porque no me funciona, me sigue saliendo el error
  #19 (permalink)  
Antiguo 04/01/2014, 15:47
 
Fecha de Ingreso: mayo-2013
Ubicación: Cúcuta
Mensajes: 98
Antigüedad: 10 años, 11 meses
Puntos: 2
Respuesta: Warning_ POST content-lenght

El tamaño máximo por defecto para la subida de archivos de PHP es de 2Mb. Tienes que modificar tu php.ini para aumentar dicho tamaño.

Modifica los valores de UPLOAD_MAX_FILESIZE para que te acepte la subida de dicha cantida de Mb.

El error_reporting(); lo pones al inicio del documento PHP. Te ocultará los errores y warnings existentes aunque no te servirá de nada. Así los ocultes no te funcionará el script ya que aunque no bote error no has solucionado el problema.

Pregunta curiosa... ¿Para qué vas a subir un archivo de 103mb de manera local?
  #20 (permalink)  
Antiguo 05/01/2014, 10:31
 
Fecha de Ingreso: octubre-2013
Mensajes: 62
Antigüedad: 10 años, 6 meses
Puntos: 0
Respuesta: Warning_ POST content-lenght

Gracias MeDxEc, el tamaño máximo para la subida de archivos y el del post ya lo he subido, pero me sigue apareciendo el error a pesar de haber puesto ese código al principio del script, pero mi intención no es subir el archivo tan grande, si no a la contra, impedirlo, lo que hago yo es testar que no se pueda y que si alguien lo intenta que aparezca el error que yo quiera y no el que da php por defecto, lo que no teniendo son dos cosas:
Porque si yo ya he puesto ese código en mi script sigue apareciéndome el error?
Como lo hace el resto de la gente para que el usuario no pueda subir archivos tan pesados?Su pongo que dejarán el maximo permitido por php pordefecto, pero si alguien intenta subir un archivo demasiado pesado saltara error, dejan que esto permita? O hacen algo para remediarlo?
Un saludo

Etiquetas: exception, warning
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 13:35.