alternativa a finfo () para php <5.3

file($_FILES["fileToUpload"]["tmp_name"], FILEINFO_MIME); switch($fileinfo) { case "image/gif": case "image/jpeg": case "image/png": move_uploaded_file($_FILES["fileToUpload"]["tmp_name"], "upload/" . $_FILES["fileToUpload"]["name"]); echo "Your file has successfully been uploaded, and is awaiting moderator approval for points." . "
Upload more."; break; default: echo "Files must be either JPEG, GIF, or PNG and less than 10,000 kb"; break; } ?>

Recientemente me ha llamado la atención que aquí no hay nada de malo, simplemente no funciona porque mis servidores php solo están a 5.2. Déjenme saber si ustedes pueden encontrar la manera de hacerlo funcionar usando MIME

pecl install fileinfo ?

http://pecl.php.net/package/Fileinfo

En los servidores Linux puede ser flojo y usar:

  $type = exec("file -iL " . escapeshellcmd($fn) . " 2>/dev/null"); $type = trim(strtok(substr(strrchr($type, ":"), 1), ";")); 

mime_content_type aún podría funcionar para usted. Si bien ahora se encuentra en la sección de fileinfo del fileinfo en el manual, existía mucho antes de que fileinfo ingresara al núcleo de PHP.

Tenga en cuenta que podría requerir un poco de configuración si su host movió el archivo mime.types de Apache fuera de la ubicación normal, como se documenta en los comentarios en esa página.

Nota: Sé que esto no responde directamente la pregunta sobre la versión de PHP. Sin embargo, encontré esta publicación al intentar resolver mi problema, por lo que puede ser útil para alguien en el futuro.

Yo también he estado luchando con la biblioteca Fileinfo recientemente al intentar validar archivos MP3. He llegado a comprender que hay algunos problemas conocidos con Fileinfo y archivos MP3, incluso si ha configurado correctamente el archivo de la base de datos mágica para su entorno.

Si Fileinfo no puede determinar el tipo de mime de un MP3, puede devolver application/octet-stream lugar. No es muy útil cuando se trata de validar un archivo.

Como alternativa, comencé a usar el siguiente comando del sistema. Esto es muy similar a la sugerencia de Fileinfo , y hasta ahora parece más confiable que Fileinfo .

 $path = 'path/to/your/mp3/file.mp3'; $mime = exec('file -b --mime-type ' . $path); 

He probado esto en Ubuntu 10.04 y OSX Mountain Lion, así que supongo que funciona en la mayoría de los entornos Unix. Creo que también hay algunos puertos de Windows.

A decir verdad, no estoy del todo seguro de cuán seguro o confiable es este método, pero lo he visto recomendado varias veces aquí en Stackoverflow. Si alguien tiene más información, ¡por favor comparte!