La longitud del contenido de POST supera el límite

94

Recibo errores similares en mi error_log en php cuando los usuarios están cargando sus archivos

Advertencia de PHP: POST Content-Length de 11933650 bytes excede el límite de 8388608 bytes en Desconocido en la línea 0

En mi php.ini (archivo ini personalizado creado en public_html) ¿resolvería esto este problema, cuánto tendría que configurarlo en alrededor de 1 GB? Voy a cambiar mi configuración a esta en php.ini, ¿resolverá el problema?

upload_max_filesize = 1000M ;1GB
post_max_size = 1000M

¿A qué establecería el límite 'memory_limit'?

También sería correcto en mi secuencia de comandos para verificar que el tamaño del archivo cargado sea <1GB

if($_FILES["uploadedfile"]["size"]<1000000)
daza166
fuente
5
¿Está seguro de que está editando el php.ini correcto?
Pekka
¿Está editando el php.ini correcto (hay varios)? ¿Algo más está restableciendo la configuración? (por ejemplo, ¿alguna llamada a php_ini_set?)
Piskvor salió del edificio el
Creé
@daza: no puedes simplemente colocar un php.ini en cualquier lugar que desees. PHP solo verifica ciertas ubicaciones, y el "directorio actual" no es una de ellas. Puede usar las directivas 'php_value' en su httpd.conf y / o un archivo .htaccess para establecer en un directorio en particular. Pero de lo contrario, tendrá que cambiarlo en el archivo .ini principal. Utilícelo php_info()para ver cuál es su configuración "local" y qué archivos .ini se están utilizando.
Marc B
1
crea un info.php con <?php phpinfo(); ?>copia en public_html y llámalo en tu navegador. Luego verifique si upload_max_filesize tiene el valor correcto.
DanielB

Respuestas:

96

8388608 bytes es 8M, el límite predeterminado en PHP. Esos cambios en php.ini deberían resolver el problema (asegúrese de reiniciar su servidor Apache después de realizarlos).

El límite de memoria no debería ser necesario cambiar aquí.

ceejayoz
fuente
Asegúrese de reiniciar su servidor después de realizar los cambios en el archivo .ini.
Sandhu
Si está utilizando nginx + php fpm, asegúrese de reiniciar el demonio php sudo service php5-fpm restart
Gourneau
El reinicio lo hizo por mí. +1 Gracias;)
Refilon
1
Me dejaron de publicar aquí mi experiencia, el reinicio me dio una stop: Unknown instance:, se acaba de crear una nueva instancia php5-pies por minuto, pero mi servidor web sigue utilizando el antiguo, que entonces tenía que hacer sudo killall -KILL php5-fpma continuaciónsudo service php5-fpm start
Memes
Dependiendo de qué más se esté haciendo en el proceso PHP que maneja la carga, puede ser necesario aumentar memory_limita una cantidad mayor que el tamaño máximo de carga deseado.
Craig Finch
45

Sugiero que cambie post_max_sizede 8M a 32M en el php.iniarchivo.

manson
fuente
39

que acaba de configurar en php.ini

luego establezca:

upload_max_filesize = 1000M;
post_max_size = 1000M;

luego reinicia tu xampp .. Verifica la imagen

Farid Blaster
fuente
17

Intente pegar esto en .htaccess y debería funcionar.

php_value post_max_size 2000M
php_value upload_max_filesize 2500M
php_value max_execution_time 6000000
php_value max_input_time 6000000
php_value memory_limit 2500M
Mel
fuente
10

post_max_size debe ser un poco más grande que upload_max_filesize , porque cuando se carga usando el método HTTP POST, el texto también incluye encabezados con el tamaño y el nombre del archivo, etc.

Si desea cargar con éxito archivos 1GiB, debe configurar:

upload_max_filesize = 1024M
post_max_size = 1025M

Tenga en cuenta que el sufijo correcto para GB es G, es decir, upload_max_filesize = 1G.

No es necesario establecer memory_limit .

ArticHieloJugo
fuente
6

En algunos casos, es necesario aumentar el tiempo máximo de ejecución.

max_execution_time=30

lo hice

max_execution_time=600000

entonces fui feliz.

Vendedor viajero
fuente
7
a menudo, es posible que no desee hacer esto en php.ini porque permitiría que TODOS los procesos php se ejecuten durante esa cantidad de tiempo. Puede configurarlo en un solo archivo con set_time_limit () por ejemplo, set_time_limit (600000)
billrichards
5

Puede haber más de un archivo php.ini . Por ejemplo, cuando se usa WAMP hay 2 archivos php.ini en los siguientes directorios:

  • C:\wamp\bin\apache\apache2.4.9\bin
  • C:\wamp\bin\php\php5.5.12

Necesitas editar el primero.

Irfandi D. Vendy
fuente
4

No estoy de acuerdo, pero esta solución para aumentar el tamaño del archivo en php.ini o .htaccess, no funcionará si el usuario envía un archivo más grande de lo permitido en la aplicación del servidor. Sugiero validar esto en la interfaz. Ejemplo:

$(document).ready(function() {
    $ ('#your_input_file_id').bind('change', function() {
        var fileSize = this.files[0].size/1024/1024;
        if (fileSize > 2) { // 2M
            alert('Your custom message for max file size exceeded');
            $('#your_input_file_id').val('');
        }
    });
});

Marcio Muzzi
fuente
2
¿En desacuerdo con qué?
Rob
1
Está bien validar el lado del cliente, pero no hace nada por la seguridad, solo para darle al usuario una advertencia inmediata si está cargando un archivo grande. El objetivo completo aquí no es evitar que los usuarios carguen un archivo grande, es permitirles cargar un archivo grande.
Altimus Prime
1
¿No hay una solución del lado del servidor / verifique esto? Puedo omitir fácilmente una verificación JS.
akinuri
Nvm, lo descubrí:if ($_SERVER["CONTENT_LENGTH"] > (int)(str_replace("M", "", ini_get("post_max_size")) * 1024 * 1024)) { // do w/e
akinuri
2

Si está usando versiones de Php 5.6.X en Windows usando Wamp, entonces la ubicación del archivo puede estar en,

C:\Windows\php.ini

Solo prueba con

post_max_size = 100M;

Intente hacer cambios en Apache uno. Por eso, su Wamp / XAMP carga el archivo .ini

Satyanarayana
fuente