Con PHP, el archivo se crea bien en el sitio Local, pero en el de Producción queda corrupto

Esta pregunta tiene que ver con la anterior. Espero ojalá puedas ayudarme.

Se toma la imagen de la BD y se almacena en un archivo y se muestra el contenido del archivo (la imagen) en el encabezado de un reporte PDF generado con Fpdf. Esto funciona bien cuando corro el programa en Local.

Pero cuando intento ejecutar la solución ya en el sitio web de Producción, veo que no se logra almacenar la información de la imagen. El archivo que normalmente se genera con la imagen, es de 14.311 Bytes (14 KB); y dentro del sitio web se genera el archivo pero con 4 Bytes (0 KB), y cuando lo abro con el visualizador de fotos de Windows, dentro de él no se ve la imagen sino la leyenda "Visualizador de fotos de Windows no puede abrir esta imagen porque el archivo parece estar dañado o es demasiado grande". Cuando lo intento abrir con Paint se genera el siguiente mensaje de advertencia: "Paint no puede leer este archivo. Este archivo no es un archivo de mapa de bits válido o su formato no es compatible".

Lo que pienso que sucede es que no se logra almacenar la imagen y queda un archivo corrupto.

Básicamente las instrucciones que uso para solucionar la toma de la imagen de la BD y mostrarla en el encabezado son:
****** ****** ****** ****** ****** ******
> $reg = mysql_fetch_array($result, MYSQL_ASSOC); (previamente ya se ha hecho el Select)
> $var_imagen = $reg['LOGO']; (el campo LOGO es tipo llongblob)
> $handle = fopen("Imágenes/temp/mi_imagen.jpg", 'por'); (se crea el archivo con extensión jpg)
> fwrite($handle, $var_imagen); (se almacena la imagen de la BD dentro del archivo creado)
> $this->Image('Imágenes/temp/mi_imagen.jpg', 10,10,80,'','jpg'); (dentro de la función Header() de Fpdf)
****** ****** ****** ****** ****** ******

En lugar de usar "Fopen" y "Fwrite", ya lo he hecho usando "file_put_contents" (la que tú me sugeriste), con lo cual sucede lo mismo: funciona todo bien en el sitio Local, pero en el Sitio Web de Producción se genera el archivo con el mismo inconveniente tal cual.

Me enteré de que es posible de que alguno(es) parámtero(es) del PHP del servidor pueda(n) estr afectando si están desactivados. Entonces he verificado los valores para ‘allow_url_fopen’ y ‘file_uploads’ (pregunto si contienen 1 o 0) y veo que ambos están desactivados ( == 0 ). Entonces he creado un .thaccess dentro de la carpeta "Imágenes/temp/", con el propósito de que dentro de esta carpeta estos dos parámetros estén siempre activados - aunque los programas están dentro de la carpeta que está conteniendo a "Imágenes/". El contenido del .htaccess es:

**** **** **** ****
php_value file_uploads = 1
php_value allow_url_fopen = 1
**** **** **** ****

Pero aún así continúa el inconveniente.

¿Qué otros parámetros podrían estar afectando? ¿Será qué no es cuestión de parámetros y que es cuestión de otra cosa?

1 respuesta

Respuesta
1

Pueden ser muchos parámetros los que pueden estar generando estos problemas.

Te recomiendo posibles ayudas para averiguar que está ocurriendo:

La primera es tratar de buscar en los logs de error de php si está mostrando algún error en la ejecución de este script que no estés viendo al no generar "output" (tu script está generando un pdf y no mostraría errores que php muestra por html).

Si intentas generar una imagen y dentro de eso se imprime un texto de error php tu imagen quedará corrupta.

Si no puedes ver esos logs de errores, te recomiendo que ejecutes solo las funciones que generan la imagen por separado para ver si puedes recibir alertas php de algún tipo.

Si no detectamos esos datos de errores, se nos hace complejo entender que está ocurriendo y no recomiendo hacer una búsqueda a ciegas ya que puedes destruir trabajo ya realizado.

Verifica permisos en los directorios y usuarios del sistema operativo que puedan dar posibles problemas.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas