2011-10-24 16 views
5

Tengo problemas para detectar el tipo MIME de un simple archivo PNG con información de archivo, con PHP 5.3.8 instalado en un servidor CentOS.Detección del tipo de MIME falla con información de archivo en PHP 5.3.8

El problema

Básicamente, si tengo el siguiente código:

<?php 
$const = defined('FILEINFO_MIME_TYPE') ? FILEINFO_MIME_TYPE : FILEINFO_MIME; 
$handle = finfo_open($const, '/usr/share/file/magic.mime'); 
$result = finfo_file($handle, '/var/vhosts/v4dev/public/Melvin.png'); 
echo $result; 
unset($handle); 
?> 

Como se puede ver el archivo es una imagen PNG. Los bytes del encabezado del archivo se han verificado y son correctos. Sin embargo, esta página da salida a un resultado incorrecto:

application/octet-stream 

supongo que esto se debe a que no se pudo detectar el tipo de archivo, y fileinfo devuelve la respuesta por defecto, pero he encontrado ninguna manera de comprobar eso.

Lo que intenté

Para comprobar la corrección de archivos magic.mime, utilicé el comando de consola archivo:

file -m /usr/share/file/magic.mime /var/vhosts/v4dev/public/Melvin.png 

que devolvió el resultado esperado:

/var/vhosts/v4dev/public/Melvin.png: image/png 

I también probé otro archivo magic.mime proporcionado con Apache, pero el problema persiste.

Intenté especificar el archivo magic.mime a través de la ubicación predeterminada de fileinfo (con enlace simbólico y copia del archivo), con la variable de entorno MAGIC y especificando la ruta del archivo en la llamada finfo_open (como se indicó anteriormente).

Intenté actualizar PHP.

... y ahora me he quedado sin opciones.


Si alguien me podría ayudar con esto, me envían ondas de la felicidad a través del espacio para que él/ella puede vivir felices para siempre.

Saludos

Respuesta

1

¿Por qué no llamar al comando file de su guión?

$result = `file -bm /usr/share/file/magic.mime /var/vhosts/v4dev/public/Melvin.png` 

Claro, no es perfecto, pero es una opción.

+0

Hmm, sí, eso podría funcionar como un truco temporal hasta que obtuve algo más sólido. Gracias. – Shtong

Cuestiones relacionadas