ForeignDBRepo: Ошибка создания миниатюры

Alex_BY

Только зашёл
Регистрация
06.05.2014
Сообщения
4
Реакции
1
Приветствую!

Есть одно вики-семейство. Хочу настроить для него общее хранилище файлов. Точнее, чтобы файлы, загруженные в, например, русской вики, можно было использовать в английской, и наоборот.

Для этого использую ForeignDBRepo, в LocalSettings.php вот такой код:

PHP:
$wgForeignFileRepos[] = array(
    'class' => 'ForeignDBRepo',
    'name' => 'en***wiki',
    'url' => "http://***wiki.com/images",
    'directory' => '/var/www/vhosts/***wiki.com/httpdocs/images',
    'hashLevels' => 2,
    'dbType' => 'mysql',
    'dbServer' => 'localhost',
    'dbUser' => '*username*',
    'dbPassword' => '*dbpassword*',
    'dbFlags' => DBO_DEFAULT,
    'dbName' => '*dbname*',
    'tablePrefix' => 'en_',
    'hasSharedCache' => false,
    'descBaseUrl' => 'http://***wiki.com/wiki/Image:',
    'fetchDescription' => false
);


Теперь, если на страницу русской Вики вставить файл, загруженный в английской, без какого-либо форматирования (просто [[Файл:image.jpg]]) - он отображается нормально.
Однако, если попытаться вызвать миниатюру (например, [[Файл:image.jpg|200px]]), появляется следующая ошибка:

Ошибка создания миниатюры: convert: no decode delegate for this image format `/tmp/magick-XXtcWg2Q' @ constitute.c/ReadImage/503.
convert: missing an image filename `/tmp/transform_a2b25ae6399e-1.jpg' @ convert.c/ConvertImageCommand/2800.

Может, кто-нибудь знает, в чём может быть причина?
 
а оно на разных серверах?
а если попробовать как в мануале через API?
https://www.mediawiki.org/wiki/Manu...mmons_in_my_installed_version_of_MediaWiki.3F
Код:
$wgForeignFileRepos[] = array(
   'class'                   => 'ForeignAPIRepo',
   'name'                    => 'wikimediacommons',
   'apibase'                 => 'http://commons.wikimedia.org/w/api.php',
   'hashLevels'              => 2,
   'fetchDescription'        => true,
   'descriptionCacheExpiry'  => 43200,
   'apiThumbCacheExpiry'     => 86400,
);
 
На одном сервере, переход на иноязычные страницы реализован так же, как в Википедии - через тег, допустим, [[en:Main_Page]], который образует ссылку в левой части окна.

Все вики используют одну БД, только русская - без префикса, английская - с префиксом 'en_', немецкая - 'de_'. Соответственно, у меня есть файлы настроек для каждой вики (WikiRuLocalSettings.php, WikiEnLocalSettings.php, WikiDeLocalSettings.php), а LocalSettings.php используется только чтобы направлять пользователя на нужный языковой раздел, в зависимости от введённого URL.

Код, который указан в первом посте, содержится в WikiRuLocalSettings.php.

Пробовал через API, но в этом случае ничего не происходит, ссылки на файлы просто становятся красными и предлагают загрузить файл. То есть, если в 'apibase' оставить 'http://commons.wikimedia.org/w/api.php', то файлы с викисклада вставляются, но мне-то нужны файлы с иноязычного раздела моей вики. А при изменении адреса - красные ссылки вместо картинок.

Кроме того, вариант с API мне не очень подходит, так как хотелось бы, чтобы файл, загруженный в любой языковой раздел, можно было использовать в любом другом языковом разделе. ForeignDBRepo это умеет, но вот с созданием миниатюр почему-то появилась такая проблема.


Кстати, если в настройках сделать $wgUseImageMagick = false; то текст ошибки выводится следующий: "Ошибка создания миниатюры: По-видимому, отсутствует файл". Такие пироги.

Может быть, где-то в БД указывается путь для записи\хранения миниатюр? Тогда, если он различен у разных вики, его можно было бы свести в одну папку - и вуа-ля...
 
А если добавить строку

PHP:
$wgTmpDirectory = '$IP/images/temp';

То ошибка принимает такой вид:

"Ошибка создания миниатюры: Не удаётся сохранить эскиз по месту назначения".
Права на запись - 777.


Нет идей, в чём всё-таки может быть проблема?
 
Проблема решена.

В LocalSettings каждой Вики добавил строку $wgUploadPath, указав для всех один путь загрузки файлов.
В коде, указанном в первом посте, для всех Вики сделал идентичными строки 'url' и 'directory'.

Можно закрывать.
 
Назад
Верх