2011-10-24 17 views
5

Mam problem z wykryciem typu MIME prostego pliku PNG z fileinfo, z PHP 5.3.8 zainstalowanym na serwerze CentOS.Wykrywanie typu Mime kończy się niepowodzeniem z fileinfo na PHP 5.3.8

Problem

Zasadniczo, jeśli mam następujący kod:

<?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); 
?> 

Jak widać plik jest obraz PNG. Bity nagłówka pliku zostały sprawdzone i są poprawne. Ale ta strona wyświetla błędny wynik:

application/octet-stream 

Chyba to dlatego, że nie można było wykryć typ pliku, a fileinfo powrócił odpowiedzi domyślnej, ale nie znalazłem sposób na sprawdzenie tego.

Co próbowałem

Aby sprawdzić poprawność pliku magic.mime użyłem komendy konsoli plik:

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

Które zwrócony oczekiwany wynik:

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

I wypróbował również inny plik magic.mime dostarczany z Apache, ale problem pozostaje.

Próbowałem określać plik magic.mime przez domyślną lokalizację fileinfo (z dowiązaniem symbolicznym i kopią pliku), ze zmienną środowiskową MAGIC i określając ścieżkę pliku w wywołaniu finfo_open (jak wyżej).

Próbowałem aktualizacji PHP.

... a teraz nie mam opcji.


Jeśli ktokolwiek mógłby mi w tym pomóc, wysłałbym fale szczęścia przez kosmos, by mógł żyć długo i szczęśliwie.

Cheers

Odpowiedz

1

Więc dlaczego nie nazwać komendy file ze skryptu?

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

Oczywiście, nie jest doskonały, ale jest to opcja.

+0

Hmm tak, to może działać tymczasowo, dopóki nie dostanę czegoś solidniejszego. Dzięki. – Shtong