Проверьте тип файла MIME при загрузке с PHP.mime_content_type, fileINfo, файл linux НЕ доступен - PullRequest
0 голосов
/ 06 октября 2011

Я весь день прочесываю сеть и не могу найти разумного решения этой проблемы.

Я пытаюсь помочь клиенту восстановить связь сайта, который был перемещен с другого хоста на общий хостинг godaddy.

сайт построен с использованием CakePHP, а в одной строке используется mime_content_type, который недоступен на этом сервере.ни команда FILE, ни fileinfo.

Я попытался заменить файл upgrade.php, но, вероятно, он завершился неудачно, поскольку не смог найти mime_magic.

решение PEAR не работает из-за недоступности файла.

есть ли какое-то решение для этого?

единственная цель здесь - выяснить, является ли файл PDF или нет, не основываясь на расширении.

PHP версии 5.2.17

большое спасибо.

1 Ответ

2 голосов
/ 06 октября 2011

PDF-файлы всегда начинаются с %PDF-, поэтому вы можете прочитать первые 4 байта и убедиться, что они равны этому.

function is_pdf($fn) {
  $f = fopen($fn, 'rb');
  if ($f === false) return false;
  $res = fread($f, 5) == '%PDF-';
  fclose($f);
  return $res;
}

Однако может быть проще просто загрузить магический файл MIME и присвоить ему имя finfo_open (php 5.3+) или настроить mime_magic.magicfile и используйте mime_content_type.

...