Это не вина PHP - но клиент использовал для загрузки файла. Проверка manual показывает, что значение ['type'] устанавливается клиентом.
Альтернативой является пропуск mime_content_type () или finfo_file () в PHP 5.3 или более поздней версии - они используют «волшебный» файл на вашем сервере для определения типа MIME файла .
Обратите внимание, что даже это не является непогрешимым, так как функции ищут отпечатки пальцев в файлах, чтобы определить тип MIME (например, у меня часто CSS-файлы обнаруживались как C #, потому что у меня был / / комментарий вверху файл).