La funzione mime_content_type() è molto utile per reperire la tipologia di un file. Se stiamo programmando un piccolo file manager ci permette di dividere i file per tipologia, senza possibilità di errore.
La funzione non è compresa nel core di default del PHP. Va compilata con un:
–with-mime-magic=/path/to/magic.mime
Se, come troppo spesso succede, non possiamo compilare il PHP sul server ed il nostro fornitore non ci ha pensato prima, possiamo sopperire alla mancanza della funzione mime_content_type() utilizzando direttamente la funziona file.
if (!function_exists(‘mime_content_type’)) {
function mime_content_type($file) {
$f = escapeshellarg($file);
return trim( `file -bi $file` );
}
}
In questo modo potremo utilizzare la funzione mime_content_type() indipendentemente dal fatto che magic.mime sia compilato o meno.
Non funziona.
Quei single-quote (che non sono) nel return non fanno ritornare nulla e se ci metto i veri single-quote o le virgolette non restituisce quello per cui la funzione è scritta.
@ debug: funziona, te lo assicuro, anche perchè la uso qui 🙂
Bisognerebbe capire come la applichi.
Funziona eccome (a patto che tu non abbia un server Windows)!
Grande Davidonzo!!!
anche se è passata una vita da quando ha postato questo articolo, sento il bisogno di ringraziarti.
sul mio easyPHP naturalmente la funzione è presente, ma non sul server di fatcow che hanno installato la versione 5.2 di PHP, e naturalmente non posso compilare nulla.
è una giornata che cerco di trovare alternative, tipo java,as3,js ecc… ma nulla, invece la tua soluzione (non riesco a capire come) funge perfettamente.
soluzione che spero duri
grazie, ty, tu, ecc….
ciauz
…integrazione
credo di aver capito che `file -bi $file` sia un comand_line unix, ecco xké non funge con i server windows; quello che non riesco a capire è come, all'alba del 2012, un grosso network come FatCow sia fermo ancora alla release 5.2.12 di PHP 🙁
cmq sei un mito, io non conosco unix, ma mo vado a istruirmi sulle sue shell, visto che l'integrazione con PHP è cosi facile; peccato non ci sia un'integrazione identica con le cmd di windows (o c'è?).
grazie ancora e ciao