Manuel:$wgForeignFileRepos
Téléversements partagés: $wgForeignFileRepos | |
---|---|
Un tableau de structure de répertoire pour les répertoires externes. |
|
Introduit dans la version : | 1.11.0 (r22580) |
Retiré dans la version : | Encore utilisé |
Valeurs autorisées : | (tableau) |
Valeur par défaut : | (voir ci-dessous) |
Autres paramètres : Alphabétique | Par fonction |
Détails
Propriétés nécessaires pour tous les dépôts
- class
- Nom de classe du dépôt. Peut venir du noyau ou d'une extension. Les classes du dépôt du noyau sont LocalRepo, ForeignDBRepo, FileRepo et ForeignAPIRepo.
- name
- Nom unique de répertoire.
Pour tous les dépôts du noyau
- url
- URL publique de la base
- thumbUrl
- URL des vignettes de la base, si différente de url/thumb
- hashLevels
- Nombre de niveaux de répertoires pour les divisions de fichiers basées sur le hachage
- thumbScriptUrl
- URL pour thumb.php (optionnel, non recommandé)
- transformVia404
- Indique s'il faut sauter la transformation des fichiers média par l'analyseur syntaxique et en remplacement, s'appuyer sur un gestionnaire 404.
- initialCapital
- Equivaut à
$wgCapitalLinks
, détermine si les noms de fichiers commencent implicitement par une lettre majuscule. L'implémentation courante peut donner des liens eronnés vers la page de description lorsque le$wgCapitalLinks
local et initialCapital ne correspondent pas. - pathDisclosureProtection
- Peut être 'paranoid' pour supprimer tous les paramètres dans les messages d'erreur, 'none' pour laisser les chemins inchangés, ou 'simple' pour remplacer les chemins par des jokers. Par défaut, pour LocalRepo la valeur est 'simple'. Notez que certains logiciels de vignette d'image écrivent le chemin de la vignette dans les métadonnées de la vignette générée, donc ce paramètre peut ne pas fournir une protection totale.
- descBaseUrl
- URL de la page de description de l'image, par exemple
https://en.wikipedia.org/wiki/File:
- scriptDirUrl
- URL de l'installation MediaWiki, équivaut à
$wgScriptPath
, par exemple :https://en.wikipedia.org/w
- articleUrl
- Equivaut à
$wgArticlePath
, par exemplehttps://en.wikipedia.org/wiki/$1
- fetchDescription
- Va chercher le texte de la page distante de description de fichier. Equivaut à
$wgFetchCommonsDescriptions
. - descriptionCacheExpiry
- S'il est mis à
0
, il n'y a pas de mise en cache. S'il vaut1
ou plus (en secondes) alors il définit le temps pendant lequel la description des pages reste dans le cache local. Ceci ne fonctionne que lorsque fetchDescription vauttrue
.
Classe ForeignAPIRepo
- apibase
- L'URL de la base pour l'API du dépôt distant (par exemple
https://commons.wikimedia.org/w/api.php
). Uniquement utilisé pour ForeignAPIRepo. - apiThumbCacheExpiry
- Durée pendant laquelle les vignettes doivent rester dans le cache local. S'il est mis à 0, alors les vignettes ne sont pas mises dans le cache local La mise en cache locale de la miniature réduira la charge sur le serveur étranger et améliorera la confidentialité des utilisateurs. Cependant, cela peut ralentir légèrement votre wiki.
Classe ForeignDBRepo
- directory
- Chemin vers un répertoire de médias de MediaWiki, local au serveur, tel que
/var/www/wiki/images
. - dbType, dbServer, dbUser, dbPassword, dbName, dbFlags
- équivaut au membre correspondant de
$wgDBservers
- tablePrefix
- Préfixe de tableau, le
$wgDBprefix
du wiki externe - hasSharedCache
True
si le cache partagé du wiki est accessible via le$wgMemc
local- favicon
- Une icône favorite pour le dépôt distant
Valeur par défaut (code dans includes/SetupDynamicConfig.php) :
if ( $wgUseSharedUploads ) {
if ( $wgSharedUploadDBname ) {
$wgForeignFileRepos[] = [
'class' => ForeignDBRepo::class,
'name' => 'shared',
'directory' => $wgSharedUploadDirectory,
'url' => $wgSharedUploadPath,
'hashLevels' => $wgHashedSharedUploadDirectory ? 2 : 0,
'thumbScriptUrl' => $wgSharedThumbnailScriptPath,
'transformVia404' => !$wgGenerateThumbnailOnParse,
'dbType' => $wgDBtype,
'dbServer' => $wgDBserver,
'dbUser' => $wgDBuser,
'dbPassword' => $wgDBpassword,
'dbName' => $wgSharedUploadDBname,
'dbFlags' => ( $wgDebugDumpSql ? DBO_DEBUG : 0 ) | DBO_DEFAULT,
'tablePrefix' => $wgSharedUploadDBprefix,
'hasSharedCache' => $wgCacheSharedUploads,
'descBaseUrl' => $wgRepositoryBaseUrl,
'fetchDescription' => $wgFetchCommonsDescriptions,
];
} else {
$wgForeignFileRepos[] = [
'class' => FileRepo::class,
'name' => 'shared',
'directory' => $wgSharedUploadDirectory,
'url' => $wgSharedUploadPath,
'hashLevels' => $wgHashedSharedUploadDirectory ? 2 : 0,
'thumbScriptUrl' => $wgSharedThumbnailScriptPath,
'transformVia404' => !$wgGenerateThumbnailOnParse,
'descBaseUrl' => $wgRepositoryBaseUrl,
'fetchDescription' => $wgFetchCommonsDescriptions,
];
}
}
Classe ForeignDBViaLBRepo
- wiki
- wiki-db-name utilisé dans
$wgLBFactoryConf
Droits sur les répertoires
Vous aurez besoin des droits 'rw' sur $IP/images
et sur $IP/images/thumbs
quelque soit l'utilisateur pour lequel PHP s'exécute.
Utilisation
Version de MediaWiki : | ≥ 1.31 |
Utiliser les fichiers de Wikimedia Commons : ForeignAPIRepo
$wgUseInstantCommons
.Vous pouvez configurer votre wiki pour qu'il utilise directement les médias de Wikimedia Commons (ou de tout autre site bâti sur MediaWiki, voir ci-dessous). Néanmoins, faites attention à ce que cela implique au niveau des droits d'utilisation.
Pour utiliser ceci, il faut :
- MediaWiki 1.13 +
- PHP avec prise en charge de JSON (pour la fonction
json_decode()
). JSON est activé par défaut depuis PHP 5.2.0; pour les versions plus anciennes, vous aurez besoin de l'extension PECL. Depuis MediaWiki 1.16, cela n'est plus nécessaire; la version 1.16 utilisera du code personnalisé (et plus lent) si JSON n'est pas disponible. - Le wiki distant doit également utiliser MediaWiki 1.13 ou plus récent; sinon son
api.php
renvoie{"error":{"code":"iiunknown_iiprop","info":"Unrecognised values for parameter 'iiprop'"}}
et les requêtes de fichiers échouent silencieusement (c'est à dire que les fichiers demandés sont traités comme s'ils n'existaient pas).
Le code ci-dessous vous permet d'avoir des fichiers média de Wikimedia Commons sur votre site. Vous devez le mettre dans votre fichier LocalSettings.php
:
$wgForeignFileRepos[] = [
'class' => ForeignAPIRepo::class,
'name' => 'commonswiki', // doit être un nom différent
'apibase' => 'https://commons.wikimedia.org/w/api.php',
'hashLevels' => 2,
'fetchDescription' => true, // Optionnel
'descriptionCacheExpiry' => 43200, // 12 heures, optionnel (valeurs en secondes)
'apiMetadataExpiry' => 14400, // 4 heures, facultatif. Augmenter pour une meilleure performance.
'apiThumbCacheExpiry' => 86400, // 24 heures, facultatif, mais nécessaire pour la mise en cache local des vignettes (notez que cette dernière est souvent plus lente que si on ne la fait pas)
];
LocalSettings.php
au lieu d'utiliser $wgUseInstantCommons
, vous ne pouvez pas utiliser wikimediacommons
comme paramètre pour name
parce qu'il existe déjà dans le code du noyau MediaWiki (dans Setup.php
).Pour récupérer les images d'un autre projet Wikimedia, initialisez apibase
avec le fichier « api.php » de ce wiki comme par exemple https://en.wikipedia.org/w/api.php
.
Exemple :
$wgForeignFileRepos[] = [
'class' => ForeignAPIRepo::class,
'name' => 'enwikipedia',
'apibase' => 'https://en.wikipedia.org/w/api.php',
'hashLevels' => 2,
'fetchDescription' => true,
'descriptionCacheExpiry' => 43200,
'apiThumbCacheExpiry' => 86400,
];
Pour inclure une image dans votre installation, utilisez simplement [[File:name_of_commons_picture.jpg]]
.
Performances
Il est possible que vous ayiez à configurer aussi le $wgMainCacheType
.
La valeur par défaut est souvent de CACHE_NONE, ce qui signifie qu'il chargera l'image de l'hôte distant à chaque chargement de page, ce qui sera très lent.
De même, vous devez initialiser apiThumbCacheExpiry
à zéro si vous préférez utiliser les miniatures étrangères qui seront plus rapides.
La valeur par défaut pour apiMetadataExpiry est de 4 heures.
C'est l'un des paramètres les plus impactants pour la performance.
Considérez initialiser une valeur très élevée, comme 604 800 (1 semaine) pour obtenir une meilleure performance.
Cependant, cela peut signifier qu'il peut prendre tant de temps jusqu'à ce que toutes modifications du le fichier arrivent sur votre wiki.
La définition de $wgResponsiveImages = false;
peut améliorer les performances des biens communs instantanés au détriment de la qualité des images sur les écrans haute résolution.
Actuellement, MediaWiki ne prend pas en charge l'enchaînement (pipelining) des requêtes API étrangères. Un site hautes performances peut souhaiter mettre en place un proxy local (tel que nginx) qui peut fusionner plusieurs requêtes en une seule requête pipeline afin de réduire le temps des allers-retours des prises de contact TCP et TLS.
Il existe également une alternative de mise en œuvre à Extension:QuickInstantCommons qui peut être beaucoup plus rapide
Utiliser les fichiers d'une base de données accessible : ForeignDBRepo, ForeignDBViaLBRepo
La classe ForeignDBRepo est très utile pour créer des familles de wikis. Dans une famille de wikis, chacun des wikis possède sa propre base de données ou le même préfixe de table.
En utilisant cette classe, vous pouvez faire en sorte qu'un membre de la famille connaisse les tables d'un autre membre de cette famille.
L'accès via ForeignDBRepo
est plus rapide que par ForeignAPIRepo
.
Ce code doit être déployé au LocalSettings.php
.
$wgForeignFileRepos[] = [
'class' => ForeignDBRepo::class,
'name' => 'otherwiki',
'url' => "https://example.org/w/images",
'directory' => '/path/to/uploads',
'hashLevels' => 2, // C'est la même chose pour l'autre membre de la famille
'dbType' => $wgDBtype,
'dbServer' => $wgDBserver,
'dbUser' => $wgDBuser,
'dbPassword' => $wgDBpassword,
'dbFlags' => DBO_DEFAULT,
'dbName' => 'mydb',
'tablePrefix' => 'mw_',
'hasSharedCache' => false,
'descBaseUrl' => 'https://example.org/wiki/File:',
'fetchDescription' => false
];
De la même façon, si $wgLBFactoryConf
est initialisé pour des wikis multiples, vous pouvez utiliser 'class' => ForeignDBViaLBRepo::class
:
$wgForeignFileRepos[] = [
'class' => ForeignDBViaLBRepo::class,
'wiki' => 'wiki-db-name-used-with-wgLBFactoryConf',
'name' => 'otherwiki', # nom de l'affichage (par exemple, l'onglet de l'habillage Vector, vector-skin-tab ''View on OtherWiki''); il peut être initialisé à wiki-specific MediaWiki:Shared-repo-name-<otherwiki>
'url' => 'https://example.org/w/images',
'directory' => '/path/to/uploads',
'hashLevels' => 2, # C'est la même chose pour l'autre membre de la famille
'tablePrefix' => 'mw_',
'hasSharedCache' => false,
'fetchDescription' => true,
'scriptDirUrl' => 'https://example.org/w', # effectif si la description peut être trouvée
];
Pour cela, tous les paramètres db* ne sont pas nécessaires comme dans ForeignDBRepo
.
Utiliser les fichiers d'un répertoire local : FileRepo
Vous pouvez configurer votre wiki pour qu'il n'utilise les médias que d'un seul répertoire. Actuellement, ce n'est qu'une fonctionalité de démonstration, qui sera probablement trop lente pour des wikis chargés ou des serveurs lents à cause de l'absence de cache. Ce code doit être ajouté à LocalSettings.php
.
Le code ci-dessous permet d'y récupérer les fichiers média :
$wgForeignFileRepos[] = [
'class' => FileRepo::class,
'name' => 'sharedFsRepo',
'directory' => 'media',
'hashLevels' => 0,
'url' => 'https://shared.example.org/path/to/media',
];
Mises en garde
Pour des performances optimales, utilisez un wiki dont le but premier est de servir de base commune pour la cible $wgForeignFileRepos
.
Evitez par exemple d'avoir deux wikis de contenu qui se pointent mutuellement dessus en tant que dépôts externes dans le but de se partager des fichiers, car cela va générer un nombre excessif de requêtes de fichiers lors de l'affichage des pages ou de leur modification, car chacun des wikis va demander les fichiers à l'autre.
De la même manière, évitez de partager une base de données entre le wiki commun et les autres wikis de contenu, particulièrement si vous devez utiliser ForeignAPIRepo
au lieu de ForeignDBRepo
parce qu'il existe des limitations imposées par votre fournisseur de services ou votre administrateur.
Ceci génère un grand nombre de connexions de base de données établies durant un temps potentiellement très long, ce qui peut se traduire par une chute des performances, ou un dépassement du nombre limite de connexions de la base de données même sur des wikis qui ont peu de trafic ou d'activité.
Voir aussi
$wgLocalFileRepo
- Manuel:Famille de wikis
- Configuration du téléversement de fichiers (principalement pour les téléversements locaux)
$wgUseInstantCommons
(pour ajouter automatiquement Commons au tableau des répertoires de fichiers)- API filerepoinfo pour obtenir des informations concernant la configuration d'un dépôt, par exemple : https://www.mediawiki.org/w/api.php?action=query&format=json&meta=filerepoinfo
- Extension:QuickInstantCommons
- Category:File repository extensions