howto fix mediawiki png uploads

Feb 26, 2008 15:46

Сегодня я имел 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 подхватились, Апача надобно перестартовать.

linux, php, howto, mediawiki

Previous post Next post
Up