php - subida - $_FILE cargar archivo grande da error 1, aunque subir_max_size es más grande que el tamaño del archivo
subir archivos grandes php (5)
Tengo un formulario de carga simple con:
enctype="multipart/form-data"/>
y
input type="hidden" name="MAX_FILE_SIZE" value="5900000" />
Y las siguientes configuraciones, que se aplican (verificadas a través de phpini ()) en php.ini:
upload_max_filesize = 7MB
memory_limit = 64M
post_max_size = 8MB
Intento subir un archivo que es pequeño - 500k y pasa por
Intento cargar un archivo que es de 5 MB (más pequeño que la configuración de upload_max_filesize
y post_max_size
) y falla con el código de error 1: que dice es:
UPLOAD_ERR_INI_SIZE Valor: 1; El archivo cargado excede la directiva upload_max_filesize en php.ini.
¿Alguien tiene una pista de lo que está pasando?
Aquí hay un gran error que he cometido:
Si desea cargar archivos realmente grandes, debe establecer KeepAliveTimeout
más alto que el valor predeterminado de 5
segundos.
Por ejemplo:
KeepAliveTimeout 300
Puede encontrar esta propiedad en /etc/apache2/apache2.conf
Creo que esto se debe a un error tipográfico. En lugar de
upload_max_filesize = 7MB
debería leer
upload_max_filesize = 7M
use phpinfo()
nuevamente para verificar qué valor se aplica realmente.
También tienes que configurar el post_max_size
de post_max_size
en "php.ini"
Vaya a W HM->Service Configuration->PHP Configuration Editor
y actualice el valor de upload_max_filesize
.
upload_max_filesize = 7M
Aquí el valor es como 7M
o 10M
pero no MB
.
Utilice phpinfo()
nuevamente para verificar qué valor se aplicó realmente.
Usa el código de abajo para entender cuál es el problema. Si el tamaño del archivo es el problema, simplemente imprime poner como excede la directiva upload_max_filesize
en php.ini
<?php
$error_types = array(
1 => ''The uploaded file exceeds the upload_max_filesize directive in php.ini.'',
''The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form.'',
''The uploaded file was only partially uploaded.'',
''No file was uploaded.'',
6 => ''Missing a temporary folder.'',
''Failed to write file to disk.'',
''A PHP extension stopped the file upload.''
);
// Outside a loop...
if ($_FILES[''userfile''][''error''] == 0) {
// here userfile is the name
// i.e(<input type="file" name="*userfile*" size="30" id="userfile">
echo "no error ";
} else {
$error_message = $error_types[$_FILES[''userfile''][''error'']];
echo $error_message;
}
?>
Por esto podemos identificar fácilmente el problema. También podemos usar switch(){ case }
para imprimir los mensajes de error anteriores.