Manual:$wgForeignFileRepos
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) |
Otras configuraciones: Alfabéticamente | Por Función |
Detalles
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
. - 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
$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)
];
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.
Access through ForeignDBRepo
is faster than through ForeignAPIRepo
.
This code should be deployed to 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
You can set your wiki to use media from a single folder. This is just a demonstration feature at present, and will probably be too slow for busy wikis or slow servers due to the lack of caching. This code should be added to LocalSettings.php
.
É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
$wgLocalFileRepo
- Manual:Familia de wikis
- Manual:Configuring file uploads (mainly for local uploads)
$wgUseInstantCommons
(to automatically add commons to the file repository array)
- 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