php - servidor - como solucionar el error 500 internal server error
Error 500 al cargar imágenes en el servidor (1)
Construyo un CMS con PHP que tiene una función de galería donde puedes seleccionar múltiples imágenes y subirlas al servidor. Para la carga de las imágenes, estoy usando un complemento llamado File-up, https://shabuninil.github.io/fileup/ , que te permite subir archivos al servidor con ajax-requests. Cuando se seleccionan varias imágenes, este complemento envía 1 (una) imagen por solicitud, por lo que si selecciona 5 imágenes, el complemento enviará 5 solicitudes ajax al servidor. En el servidor hay un script que toma la imagen enviada por el complemento, valida la imagen y la mueve a una carpeta específica con la función move_uploaded_file. El problema es que de alguna manera recibo un error 500 en algunas solicitudes del complemento. He intentado diferentes publicaciones sobre el error 500 publicado aquí, stackoverflow.com, para solucionar el problema pero sin éxito. Pensé que tal vez el servidor recibía demasiadas solicitudes a la vez del complemento, así que implementé la función setTimeout () de Jquery con 5 segundos, pero todavía no tuve éxito.
Incluso pensé que tal vez el CMS tenía algunos errores o algo así que probé el CMS colocándolo en otro servidor en co.nf pero en ese servidor no obtuve ningún error, todo funcionó bien, así que si estoy en lo cierto, el problema está en el servidor original. Me he quedado sin ideas, entonces, ¿alguien puede ayudarme? ¡Gracias por adelantado!
La función que coloca la imagen en una carpeta específica, en este caso la carpeta "cargar":
// Be sure we''re dealing with an upload
if (is_uploaded_file($_FILES[''filedata''][''tmp_name'']) === false) {
throw new /Exception(''Error on upload: invalid file definition'');
}
// Rename uploaded file
$uploadName = $_FILES[''filedata''][''name''];
$ext = strtolower(substr($uploadName, strripos($uploadName, ''.'') + 1));
$filename = round(microtime(true)) . mt_rand() . ''.'' . $ext;
$target_dir = "../uploads/" . $filename;
if (move_uploaded_file($_FILES[''filedata''][''tmp_name''], $target_dir)) {
// Save filename into db
}
Imagen de las solicitudes ajax y sus errores:
Error en el archivo de error del servidor:
[Mon Nov 20 01:17:44 2017] [error] [client IP_ADDRESS ] [client IP_ADDRESS]
ModSecurity: Warning. Match of "eq 0" against "MULTIPART_UNMATCHED_BOUNDARY"
required. [file "/services/mod_security-rules/00_asl_zz_strict.conf"] [line
"37"] [id "330792"] [rev "2"] [msg "Multipart parser detected a possible
unmatched boundary. This may be an impedence mismatch attack, a broken
application or a broken connection. This is not a false positive. Check
your application or client for errors."] [severity "NOTICE"] [tag "no_ar"]
[hostname "MY_HOST"] [uri "/MY_SITE/cms/pages/upload.php"]
Estás obteniendo un error de seguridad de mod, lo que me hace sospechar que tu servidor está limitando el tamaño de las cargas.
El límite predeterminado es 512kb , que fácilmente podría ser mucho menor que un archivo de imagen moderno.
Puede aumentarlo a un límite superior, por ejemplo, 1 gb usando:
SecResponseBodyLimit 1048576
Luego deberá reiniciar el servidor para que recoja los cambios.