Сегодня я имел MediaWiki. Точнее, напротив -- это она имела меня. Хочу загрузить в wiki файлик plot.png, вполне себе такой валидный файлик -- ан нет, пишет, что "The file is corrupt or has an incorrect extension. Please check the file and upload again".
Методом последовательных приближений было выяснено, что виновата функция MediaWiki MimeMagic::guessMimeType(), точнее, функция PHP mime_content_type(), а если совсем точно, то файл /etc/httpd/conf/magic, предоставляемый вовсе даже не PHP, а Apache.
Так вот, в этом файлике нет никаких упоминаний про PNG, ввиду чего тип нашего файла определяется как text/plain, что порождает внутри кода MediaWiki классовое противоречие, ибо MIME-тип text/plain никак не
конгруэнтен расширению PNG. Противоречие сиё она разрешает очень просто -- загрузить файлик не даёт, ругается (см. выше).
Решение очень просто -- выцарапать строчку про png из /usr/share/magic.mime (файл любезно предоставлен утилитой file, точнее, пакетом file-libs) и вписать её в вышеупомянутый /etc/httpd/conf/magic:
echo "0 string \x89PNG image/png" >> /etc/httpd/conf/magic
Для проверки:
echo '' | php
image/png
Update: ваша mediawiki, вероятно, крутится под mod_php в Апаче. Чтобы изменения в magic подхватились, Апача надобно перестартовать.