[PHP] Sostituto per il mime_content_type()

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.

5 thoughts on “[PHP] Sostituto per il mime_content_type()”

  1. 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.

  2. 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

  3. …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

Comments are closed.