Tengo un problema con GD que no crea un nuevo archivo JPG, simplemente falla. No hay mensajes de error y ninguna indicación de lo que está sucediendo. Este no es un código nuevo, ha estado funcionando durante los últimos seis años, pero de repente, con imágenes más grandes, ha comenzado a fallar.
En segundo plano, esto se ejecuta en un servidor antiguo (que se apagará y se moverá a un nuevo sitio en PHP8 en un par de meses) que tiene PHP5.3.3 con GD versión 2.0.34.
El código crea miniaturas a partir de la imagen de alta resolución (alrededor de 24-30 MB) y genera una serie de miniaturas de 150 px de ancho a 1024 px de ancho. Falla en todo. Aumenté el límite de memoria PHP en la página a 512 MB y configuré el indicador GD.JPEG_ignore_warning para archivos JPG corruptos.
Pero cada vez con estos archivos, esta línea:
$src_img = @imagecreatefromjpeg($file_path);simplemente devuelve FALSO. Pero nunca cae con un error. El archivo definitivamente está allí (ejecute el mismo código con un archivo del mismo nombre que tiene <20 MB y funciona bien) y hay mucho espacio en disco/memoria disponible para procesar un archivo de 60 MB en la memoria, así que no veo que ese es el problema.
Una búsqueda en Google, StackOverflow y varios otros sitios no ha producido ningún problema similar.
¿Alguien puede ofrecer alguna idea sobre cuál es el problema / solución? He estado analizando esto durante dos días y necesitamos resolverlo; simplemente usar archivos JPG más pequeños no es una opción para esto.
Gracias a la respuesta anterior de @Lessmore, GD informó un archivo JPG no válido, por lo que una búsqueda posterior reveló esta respuesta en StackOverflow, que resolvió el problema al leer el JPG de una cadena, en lugar de un archivo:
Lectura de un JPG inválido con GD
Gracias a todos - como siempre!