Nuestros investigadores estrellas han agotado sus depósitos de café, por su búsqueda día y noche por la solución, hasta que Javier encontró el resultado en Gitea así que en este momento la comparte contigo.
Solución:
Aquí hay una lista de verificación para cargar archivos en PHP:
-
Compruebe php.ini para:
file_uploads = On
post_max_size = 100M
upload_max_filesize = 100M
- Es posible que necesite usar
.htaccess
o.user.ini
si está en un alojamiento compartido y no tiene acceso aphp.ini
. - Asegúrese de que está editando el archivo ini correcto: use el
phpinfo()
función para verificar que su configuración realmente se está aplicando. - También asegúrese de no escribir mal los tamaños, debería ser
100M
no100MB
.
- Es posible que necesite usar
-
Asegúrese de que su
-
Asegúrese de no tener dos campos de archivo de entrada con el mismo
name
attribute. Si necesita admitir varios, coloque corchetes al final del nombre: -
Asegúrese de que sus directorios tmp y upload tengan los permisos de lectura y escritura correctos. La carpeta de carga temporal se especifica en la configuración de PHP como
upload_tmp_dir
. -
Asegúrese de que el destino de su archivo y los directorios tmp/upload no tengan espacios.
-
Asegúrate de que todo
cerrar etiquetas.
-
Asegúrese de que su etiqueta FORM tenga
method="POST"
. Las solicitudes GET no admiten cargas de datos de varias partes o formularios. -
Asegúrese de que la etiqueta de entrada de su archivo tenga un NOMBRE attribute. una identificación attribute ¡No es suficiente! IDENTIFICACIÓN attributes son para uso en el DOM, no para cargas útiles POST.
-
Asegúrese de no estar usando Javascript para deshabilitar su
campo de envío
-
Asegúrese de no anidar formularios como
-
Verifique su estructura HTML en busca de etiquetas superpuestas o no válidas como
-
También asegúrese de que el archivo que está cargando no tenga caracteres no alfanuméricos.
-
Una vez, pasé horas tratando de averiguar por qué me estaba pasando esto de repente. Resultó que había modificado algunas de las configuraciones de PHP en
.htaccess
y uno de ellos (aún no estoy seguro de cuál) estaba causando que la carga fallara y$_FILES
estar vacío -
Podría intentar evitar los guiones bajos (
_
) en elname=""
attribute de Eletiqueta
-
Intente cargar archivos muy pequeños para determinar si se trata de un problema de tamaño de archivo.
-
Comprueba el espacio disponible en tu disco. Aunque es muy raro, se menciona en este comentario de la página del Manual de PHP:
Si los $_ARCHIVOS array de repente se vacía misteriosamente, aunque su formulario parece correcto, debe verificar el espacio en disco disponible para su partición de carpeta temporal. En mi instalación, todas las cargas de archivos fallaron sin previo aviso. Después de mucho rechinar de dientes, intenté liberar espacio adicional, después de lo cual la carga de archivos volvió a funcionar repentinamente.
-
Asegúrese de no enviar el formulario a través de una solicitud POST de AJAX en lugar de una solicitud POST normal que hace que una página se vuelva a cargar. Revisé todos y cada uno de los puntos de la lista anterior y finalmente descubrí que la razón por la cual mi variable $_FILES estaba vacía era que estaba enviando el formulario mediante una solicitud AJAX POST. Sé que también hay métodos para cargar archivos usando ajax, pero esta podría ser una razón válida por la cual su $_FILES array esta vacio.
Fuente para algunos de estos puntos:
http://getluky.net/2004/10/04/apachephp-_files-array-misteriosamente-vacío/
En cuanto al HTML, parece que ha configurado esa parte correctamente. ya tienes el enctype="multipart/form-data"
que es muy importante tener en el formulario.
en cuanto a su php.ini
configuración, a veces en sistemas múltiples php.ini
los archivos existen. Asegúrese de que está editando el correcto. Sé que dijiste que habías configurado tu php.ini
archivo para tener cargas de archivos, pero ¿también configuró su upload_max_filesize
y post_max_size
ser más grande que el archivo que está tratando de cargar? Entonces deberías tener:
file_uploads = On; sounds like you already did this
post_max_size = 8M; change this higher if needed
upload_max_filesize = 8M; change this higher if needed
¿Su directorio: "c:wamptmp"
tiene permisos de lectura y escritura? ¿Recordó reiniciar Apache después de realizar la php.ini
¿cambios?
Es importante agregar enctype="multipart/form-data"
a tu formulario, ejemplo
Puntuaciones y reseñas
Si te gustó nuestro trabajo, eres capaz de dejar una crónica acerca de qué le añadirías a este escrito.