Manual:$wgForeignFileRepos

This page is a translated version of the page Manual:$wgForeignFileRepos and the translation is 53% complete.
Outdated translations are marked like this.
Shared uploads: $wgForeignFileRepos
Un 'array' de estructura de repositorio para repositorios externos.
Introducido en la versión:1.11.0 (r22580)
Eliminado en la versión:aún se usa
Valores permitidos:(array)
Valor predeterminado:(véase abajo)

Detalles

  Advertencia: When using Wikimedia Commons it is required to use HTTPS for links, instead of HTTP. As of 2015, Wikimedia Foundation redirects traffic from HTTP to HTTPS. For security reasons MediaWiki does not follow such redirects (see task T102566).

The solution is to use HTTPS in the URLs for Wikimedia Commons! If you use $wgUseInstantCommons , this issue is automatically fixed by using MediaWiki 1.25.2 or newer. If you have defined custom settings with $wgForeignFileRepos for Wikimedia Commons, then the URLs must be adjusted accordingly!

Propiedades requeridas para todos los repositorios:

class
El nombre de clase del repositorio. Puede venir desde el núcleo o una extensión. Las clases de repositorio de núcleo son LocalRepo, ForeignDBRepo, FileRepo y ForeignAPIRepo.
name
Un nombre único para el repositorio.

For all core repos

url
URL base, pública
thumbUrl
Base thumb url, if different from url/thumb
hashLevels
El número de directorios nivel para la división basada en hash de archivos
thumbScriptUrl
La URL de thumb.php (opcional, no recomendado)
transformVia404
Para ignorar la transformación del archivo en parse y en vez de eso usar un manipulador de 404s.
initialCapital
Equivalente a $wgCapitalLinks , determina si los nombres de archivo empiezan implícitamente con una letra capital o no. La implementación actual puede dar enlaces a páginas de descripción incorrectos cuando $wgCapitalLinks e initialCapital se encuentran mal configurados localmente.
pathDisclosureProtection
Puede usarse 'paranoid' para remover todos los parámetros de los mensajes de error, 'none' para dejar los directorios sin cambiar, o 'simple' para reemplazar los directorios con marcadores de posición (ó "placeholders"). El valor por defecto de LocalRepo es 'simple'. Note, some image thumbnailing software puts the thumbnail path into the resulting thumb's metadata, so this setting may not provide full protection.
descBaseUrl
URL de las páginas de descripción, ejemplo: https://en.wikipedia.org/wiki/File:
scriptDirUrl
URL de la instalación MediaWiki, equivalente a $wgScriptPath , ejemplo: https://en.wikipedia.org/w
articleUrl
Equivalente a $wgArticlePath , ejemplo: https://en.wikipedia.org/wiki/$1
fetchDescription
Obtiene el texto de la página de descripción remota. Equivalente a $wgFetchCommonsDescriptions .
  Advertencia: Due to a bug in MediaWiki, the foreign wiki should have a full, or protocol-relative (but not a generally relative) url in $wgUploadPath , or description pages with images on them won't be fetched properly.
descriptionCacheExpiry
Si tiene el valor 0, no se usará el caché. Use 1 o más (segundos) para definir cuánto se quedará el caché de las páginas de descripción. Se debe configurar fetchDescription como "true" para poder usarlo.

Clase ForeignAPIRepo

apibase
La URL base para el API del repositorio remoto (ejemplo: https://commons.wikimedia.org/w/api.php). Sólo usado para ForeignAPIRepo.
apiThumbCacheExpiry
Cuanto durará el caché de miniaturas localmente. No activar esto, o configurandolo con "0", deshabilita el caché de miniaturas localmente. Local thumb caching will reduce load on the foreign server, and improve user privacy. However it may cause your wiki to be slightly slower.

Clase ForeignDBRepo

directory
A path to MediaWiki's media directory local to the server, such as /var/www/wiki/images.
dbType, dbServer, dbUser, dbPassword, dbName, dbFlags
equivalente al miembro correspondiente de $wgDBservers
tablePrefix
Prefijo de la tabla, el $wgDBprefix del wiki remoto
hasSharedCache
"true" si el cache del wiki es compartido y accesible vía el $wgMemc local
favicon
A favicon for the remote repository

Valores por defecto (código en 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,
		];
	}
}

ForeignDBViaLBRepo class

wiki
wiki-db-name used in $wgLBFactoryConf

Permisos de directorio

Necesitarás permiso de escritura en $IP/images y $IP/images/thumbs para el usuario con el que se ejecuta php.

Uso

Versión de MediaWiki:
1.31

Usando archivos de Wikimedia Commons : ForeignAPIRepo

Desde 1.16.0 hay una forma más corta y conveniente de usar Commons como repositorio remoto: $wgUseInstantCommons .

Puedes configurar tu wiki para que use medios de Wikimedia Commons (o de cualquier otro sitio que use MediaWiki, véase más abajo) directamente. Sin embargo, por favor ten cuidado con cualquier implicación legal.

Para usar esto, necesitas:

  • MediaWiki 1.13 +
  • PHP con soporte JSON (para la función json_decode()). JSON está habilitado por defecto desde PHP 5.2.0, aunque necesitarás la extensión PECL para versiones anteriores. Desde MediaWiki 1.16, ésto no es necesario; v. 1.16 usará código personalizado (y lento) si JSON no está disponible.
  • El wiki remoto debe usar también MediaWiki 1.13 ó posterior; de lo contrario su api.php da {"error":{"code":"iiunknown_iiprop","info":"Unrecognised values for parameter 'iiprop'"}} y las transferencias de archivos fallan silenciosamente (ejemplo: los archivos requeridos son tratados como no existentes).

The code below enables media files from Wikimedia Commons on your site. You should place it to localsettings.php.

$wgForeignFileRepos[] = [
	'class' => ForeignAPIRepo::class,
	'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)
    'apiMetadataExpiry' => 14400, // 4 hours, optional. Consider increasing for better performance.
	'apiThumbCacheExpiry' => 86400, // 24 hours, optional, but required for local thumb caching (Note local thumb caching is often slower than not doing it)
];
If you decide to add this setting to your "LocalSettings.php" file instead of using $wgUseInstantCommons you cannot use wikimediacommons as a setting for name since it is already present in core MediaWiki code (in "Setup.php").

Para tomar archivos de otro proyecto Wikimedia, cambie apibase a algo como "api.php", por ejemplo. https://en.wikipedia.org/w/api.php Ejemplo:

$wgForeignFileRepos[] = [
	'class' => ForeignAPIRepo::class,
	'name' => 'enwikipedia',
	'apibase' => 'https://en.wikipedia.org/w/api.php',
	'hashLevels' => 2,
	'fetchDescription' => true,
	'descriptionCacheExpiry' => 43200,
	'apiThumbCacheExpiry' => 86400,
];

Para poner una imagen en tu instalación, simplemente usa [[File:nombre de la imagen de commons.jpg]].

Performance

Puede que necesites configurar $wgMainCacheType también. Por defecto se encuentra configurado a CACHE_NONE, que significa que cargará la imagen del host remoto en cada carga de página. Similarly, you need to set apiThumbCacheExpiry to zero if you prefer to use the foreign thumbnails which will be faster. The default for apiMetadataExpiry is 4 hours. This is one of the most impactful settings for performance. Consider setting to a really high value, such as 604 800 (1 week) for best performance. However this may mean that it can take up to that long for changes to the file to get to your wiki.

Setting $wgResponsiveImages = false; may improve performance of instant commons at the cost of making images be lower quality on high resolution displays.

Currently MediaWiki does not support pipelining foreign api requests. A high performance site may want to look at setting up a local proxy (like nginx) that can coalesce multiple requests into a single pipelined request to reduce round trip times from TCP & TLS handshakes.

There is also an alternative implementation at Extension:QuickInstantCommons which may be much faster

Usando archivos de una base de datos que puedes acceder : ForeignDBRepo, ForeignDBViaLBRepo

La clase ForeignDBRepo es muy útil para crear familias wiki. En una familia wiki, cada wiki tendrá su propia base de datos o prefijo de tabla. Usando esta clase, puedes 'conectar' las tablas de un miembro de la familia con otro. Acceso via ForeignDBRepo es más rápido que por vía ForeignAPIRepo. Éste código debe ser añadido a LocalSettings.php.

$wgForeignFileRepos[] = [
	'class' => ForeignDBRepo::class,
	'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
];

Alternatively, if you have $wgLBFactoryConf set up for multiple wikis, you can use 'class' => ForeignDBViaLBRepo::class:

$wgForeignFileRepos[] = [
	'class' => ForeignDBViaLBRepo::class,
	'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
];

This needs not all the db* parameters as in ForeignDBRepo.

Usando archivos de un directorio local : FileRepo

Puedes hacer que tu wiki use archivos de una carpeta. Esta es una función de demostración actualmente, y puede que sea muy lenta para wikis activos o servidores lentos debido a la falta de caching.

Éste codigo debe ser añadido a LocalSettings.php.

$wgForeignFileRepos[] = [
	'class' => FileRepo::class,
	'name' => 'sharedFsRepo',
	'directory' => 'media',
	'hashLevels' => 0,
	'url' => 'https://shared.example.org/path/to/media',
];

Caveats

For optimal performance, use a wiki whose primary purpose is to serve as a commons as the target of $wgForeignFileRepos. Avoid, for instance, pointing two content wikis at each other as foreign repositories in order to share files between them, because this will generate an excessive number of file requests on page views and edits as both wikis request the file from each other.

Likewise, avoid sharing a database between the commons wiki and other content wikis, especially if you must use ForeignAPIRepo instead of ForeignDBRepo due to limitations imposed by your service provider or administrator. This generates a large number of potentially long-lived database connections that can result in impaired performance, or can exceed DB connection limits even on wikis with very little traffic or activity.

Véase también

  • filerepoinfo API for getting information about the configuration of a repo, e.g.

https://www.mediawiki.org/w/api.php?action=query&format=json&meta=filerepoinfo