Неверный mime-тип из PHP

При загрузке документа Power Point 2000 (.ppt), созданного в Microsoft Power Point, он возвращает тип приложения mime / vnd.ms-office. Я ожидаю, что приложение / vnd.ms-powerpoint вернется из:

<?php $finfo = new finfo(FILEINFO_MIME); $mime_type = $finfo->file($filepath); // strip off the mime encoding information $mime_type = substr($mime_type, 0, strpos($mime_type, ';')); 

Есть идеи, почему это возможно?

Я запускаю следующее:

  • Ubuntu
  • PHP 5.2
  • Apache 2

finfo ins't на 100% надежна, особенно когда дело доходит до документов Microsoft Office. Я не думаю, что есть легкое решение для вашего решения. Вы можете попробовать, если он вернет application/vnd.ms-office , затем дополнительно проверьте, является ли расширение файла .ppt , и если это так, установите тип mime в application/vnd.ms-powerpoint . Конечно, расширение бессмысленно, но те, кто использует Microsoft, есть хороший шанс, что файл с расширением .ppt – это powerpoint, а не что-то еще.

Убедитесь, что файл типов MIME Apache имеет правильный тип MIME для этого расширения файла. Вам нужно посмотреть /conf/mime.types и добавить эти строки, если они не существуют.

 application/vnd.powerpoint ppt application/vnd.powerpoint pptx 

После внесения этих изменений вам необходимо будет перезапустить Apache.