альтернатива finfo () для php <5.3

<?php $finfo = new finfo(); $fileinfo = $finfo->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." . "<html><br><a href='uploadfile.php'>Upload more.</a>"; break; default: echo "Files must be either JPEG, GIF, or PNG and less than 10,000 kb"; break; } ?> 

мне недавно было доведено до моего сведения, что здесь нет ничего плохого, это просто не работает, потому что мои серверные php только в 5.2 лемме знают, если вы, ребята, можете найти способ заставить его работать с помощью MIME

pecl install fileinfo ?

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

На серверах Linux вы можете лениться и использовать:

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

mime_content_type может по-прежнему работать на вас. Хотя теперь он находится в разделе fileinfo в руководстве, он существовал до того, как fileinfo был внесен в ядро ​​PHP.

Обратите внимание, что может потребоваться небольшая конфигурация, если ваш хост переместил файл mime.types Apache из нормального местоположения, как mime.types в комментариях на этой странице.

Примечание. Я знаю, что это напрямую не отвечает на вопрос о версии PHP. Тем не менее, я нашел этот пост, пытаясь решить мою проблему, и поэтому он может быть полезен кому-то в будущем.

В последнее время я слишком часто борется с библиотекой Fileinfo , пытаясь проверить файлы MP3. Я понял, что есть некоторые известные проблемы с файлами Fileinfo и MP3, даже если вы правильно настроили файл магической базы данных для своей среды.

Если Fileinfo не может определить тип mime MP3, он может вернуть application/octet-stream . Не очень полезно при проверке файла.

В качестве альтернативы я начал использовать следующую системную команду. Это очень похоже на предложение @ mario, и до сих пор кажется более надежным, чем Fileinfo .

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

Я тестировал это на Ubuntu 10.04 и OSX Mountain Lion, поэтому я предполагаю, что он работает в большинстве сред Unix. Я считаю, что есть и некоторые порты Windows.

По правде говоря, я не совсем уверен, насколько безопасен или надежный этот метод, но я видел его несколько раз здесь, на Stackoverflow. Если у кого-то есть больше информации, пожалуйста, поделитесь!