k001
k001
:...

April 2032
        1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30

k001 [userpic]
FC5/Mediawiki: image upload b0rked

А вы знаете, что на Fedora Core 5 в Mediawiki не работает загрузка файлов (картинок)? Я вот недавно тоже узнал, попытавшись загрузить файлы на wiki.central5.ru. Увлекательнейшая история, доложу я вам!

Problem.

В общем, загружаешь картинку, а он тебе и говорит — какой-то у вас файл покоррапченный. В логах ничего, почему или как он покоррапчен — тоже не говорит.

Findings.

Два часа копался в исходниках Mediawiki, вставлял всякие дебаги. Выяснил, что всё это не работает, ибо не работает PHP-шная функция mime_content_type() — то есть работает, но возвращает text/plain вместо image/png. Далее умная mediawiki смотрит, что файл с расширением .png, а контент-тайп какой-но несоответствующий, на основании чего и делает вывод, что он покоррапчен. Попробовал file -i — работает. А функция из PHP (php-5.1.6-1.2) — не работает.

На другой системе (CentOS4, php-4.3.9-3.22) оно работает и в PHP. Пострейсил php, посмотрел, что на центосе он читает /usr/share/file/magic.mime, а на Федоре — /etc/httpd/conf/magic. Это в том же формате файлик, только в три раза меньше, посему там нету ничего про PNG.

Solutions.

1. Совсем правильно надо бы починить PHP. Я, быть может, ещё гляну, почему он, гад, смотрит не в тот файл, или хотя бы баг зафайлю (проверив ещё и на FC6) — так что, глядишь, будет вторая серия. См. update ниже.

2. Конкретно для mediawiki это можно починить, прописав в LocalSettings.php такую строчку:
$wgMimeDetectorCommand = "/usr/bin/file -ib";
После этого для определения майм-тайпа будет использоваться указанный бинарь.

3. Наверное, можно скопировать /usr/share/file/magic.mime в /etc/httpd/conf/magic, и всё заработает. Но в общем случае нехорошо такие вещи делать на системе, да и rpm -V apache будет, наверное, ругаться.

Update: в FC6 тоже не работает и, как выяснилось, в FC4 тоже! И всем, судя по всему, по барабану. Мне не. Добавил комменты к багу #177926, буду ревностно следить.

Comments

Не люблю я этих PHP-шников...

На fc6 тоже не работает! зафайлил баг в федору, см. упдате.

Вы просто не умеете их готовить : )

А я FC не люблю за кривость...

не, ну я не говорю, что я люблю FC - мне на хостинге в GoDaddy вообще предложили FC3 или FC4 - так я вообще не знаю что с ним вскоре делать когда ничего апгрейдиться дальше не будет.

О, так ты пользователь Virtuozzo :) всё-таки мир тесен :)

Не - у меня при этом dedicated сервак как это ни смешно.

однако некоторым вещам (медиавики, пхпмайадмин и достаточно других очень нужных вещей) нет аналогов на перле. Приходится всем есть кактусы.

Это да, тут я согласен - тот же WordPress уникален в своем роде, но это не отменяет того что PHP является куском говна и что только наличие миллиона мух оправдывает его существование.