Manuel:$wgForeignFileRepos

From MediaWiki.org
Jump to navigation Jump to search
This page is a translated version of the page Manual:$wgForeignFileRepos and the translation is 100% complete.

Other languages:
Deutsch • ‎English • ‎español • ‎français • ‎magyar • ‎Ελληνικά • ‎中文 • ‎日本語 • ‎한국어
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)

Détails

Avertissement Avertissement : Si vous utilisez Wikimedia Commons, vous devez utiliser HTTPS pour les liens, au lieu de HTTP. Depuis 2015, la Fondation Wikimedia redirige le trafic de HTTP vers HTTPS. Pour des raisons de sécurité MediaWiki ne suit pas ces redirections (voir tâche T102566).

La solution est d'utiliser HTTPS dans les URLs pour Wikimedia Commons ! Si vous utilisez $wgUseInstantCommons, ce problème est automatiquement corrigé en utilisant MediaWiki 1.25.2 ou plus récent. Si vous avez défini des paramètres personnalisés avec $wgForeignFileRepos pour Wikimedia Commons, alors les URLs doivent être ajustées en conséquence !

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
Equivalent à $wgCapitalLinks, détermine si les noms de fichiers commencent implicitement par une lettre majuscule. L'implémentation courante peut donner des liens erronné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 exemple https://en.wikipedia.org/wiki/$1
fetchDescription
Va chercher le texte de la page distante de description de fichier. Equivaut à $wgFetchCommonsDescriptions.
Avertissement Avertissement : A cause d'un bogue dans MediaWiki, le wiki externe doit avoir une URL complète, ou dépendante du protocole (et non simplement relative) dans $wgUploadPath, sinon les pages de description avec des images dessus ne seront pas récupérées correctement.
descriptionCacheExpiry
S'il est mis à 0, il n'y a pas de mise en cache. S'il vaut 1 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 vaut true .

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

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/Setup.php) :

if ( $wgUseSharedUploads ) {
	if ( $wgSharedUploadDBname ) {
		$wgForeignFileRepos[] = [
			'class' => 'ForeignDBRepo',
			'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',
			'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.13

Utiliser les fichiers de Wikimedia Commons : ForeignAPIRepo

Depuis 1.16.0 il existe un raccourci plus pratique dans l'utilisation de Commons en tant que dépôt externe : $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',
	'name' => 'commonswiki', // Must be a distinct name
	'apibase' => 'https://commons.wikimedia.org/w/api.php',
	'hashLevels' => 2,
	'fetchDescription' => true, // Optional
	'descriptionCacheExpiry' => 43200, // 12 hours, optional (values are seconds)
	'apiThumbCacheExpiry' => 86400, // 24 hours, optional, but required for local thumb caching
];
Si vous choisissez de mettre ce paramètre dans votre fichier « 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 de MediaWiki (dans « Setup.php »).

Pour récupérer les images d'un autre projet Wikimedia, initialisez apibase pour définir le fichier « api.php » comme étant celui de ce wiki, c'est à dire : https://en.wikipedia.org/w/api.php Exemple :

$wgForeignFileRepos[] = [
	'class' => 'ForeignAPIRepo',
	'name' => 'enwiki',
	'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]].

Il est possible que vous ayez à configurer aussi le $wgMainCacheType . La valeur par défaut est CACHE_NONE, ce qui signifie que les images seront téléchargées de l'hôte distant à chaque chargement de page. De manière similaire, vous devez initialiser apiThumbCacheExpiry à zéro si vous préférez utiliser les vignettes externes.

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',
	'name' => 'otherwiki',
	'url' => "https://example.org/w/images",
	'directory' => '/path/to/uploads',
	'hashLevels' => 2, // This must be the same for the other family member
	'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' :

$wgForeignFileRepos[] = [
	'class' => 'ForeignDBViaLBRepo',
	'wiki' => 'wiki-db-name-used-with-wgLBFactoryConf',
	'name' => 'otherwiki', # displayname (eg. the vector-skin-tab “View on OtherWiki“) may be set at wiki-specific MediaWiki:Shared-repo-name-<otherwiki>
	'url' => 'https://example.org/w/images',
	'directory' => '/path/to/uploads',
	'hashLevels' => 2, # This must be the same for the other family member
	'tablePrefix' => 'mw_',
	'hasSharedCache' => false,
	'fetchDescription' => true,
	'scriptDirUrl' => 'https://example.org/w', # has effect whether description can be fetched
];

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',
	'name' => 'sharedFsRepo',
	'directory' => 'media/',
	'hashLevels' => 0,
	'url' => 'https://shared.example.org/path/to/uploads/',
];

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