Manual:Configuring file uploads/zh

MediaWiki 支持上传和整合媒体文件 本页描述此特性的技术方面，一般使用方面请看 和

出于安全考虑，从MediaWiki的1.1版起，上传功能默认是禁用的. 通过配制可以启用上传功能，但建议你先检查确认一下先决条件.

确保上传功能在PHP中启用
中需有如下设置

如无此设置，PHP脚本中不能使用上传功能，并且MediaWiki的上传也不能启用.

如果启用了"open_basedir" 项，那么此项须包含： 1、你的 MediaWiki 中用于存储上传文件的文件夹(即"{$IP}/images") 2、'upload_tmp_dir' 项设置的文件夹（如果未设此项则需包含系统默认的上传临时文件的文件夹） 添加'upload_tmp_dir'可以避免像找不到文件/var/tmp/php31aWnF这样的消息（在这个例子中'upload_tmp_dir'是'/var/tmp'）. 阅读文件上传基础知识，特别是了解有关PHP文件上传的更多信息.

注意：变量的形式值是 boolean|布尔表达式. PHP将每个未被识别为False值的字符串视为true，因此经常使用的“on”值会产生相同的结果.

Windows 与 IIS 用户检查
设置 拥有Internet来宾帐户的权限（ _MachineName或对于IIS 7+： ）：读、写、执行

检查目录安全性
需要配置上传目录，以便最终用户无法上传和执行其他脚本，这些脚本可能会利用对您的Web目录的访问权并损坏您的Wiki或Web站点.

设置 文件夹（或以前版本中的 文件夹）以获得权限“755”：
 * 用户可以读、写和执行.
 * 组可以读和执行.
 * 任何人都可读和执行.

如果使用安全模式，请确保该目录由用于运行php脚本的用户（即apache用户）拥有.

如果使用CentOS 6或Mageia，则chown命令中的所有者应为apache:apache而不是www-data:www-data.

如果使用，请确保相应地调整ACL（请参阅此处）.

如果您不希望公共用户列出您的images文件夹，可以选择在apache配置中进行设置：
 * 限制images文件夹上的目录列表

检查 .htaccess 文件
MediaWiki安装文件夹中的 目录包含一个.htaccess文件，其中包含一些配置. 此文件的目标是使上载文件夹更安全，如果将上载目录放在其他位置，建议还将.htaccess文件复制到新位置，或直接在服务器上应用该配置. 但是，其中一些配置可能会导致冲突或错误，具体取决于服务器的配置方式.

需要考虑的一些事情：


 * 如果服务器不允许在.htaccess文件中设置或覆盖指令，则访问该文件夹下的任何文件可能会导致通用的“HTTP 500错误”. 如果是这种情况，您应该注释掉行，并将这些指令直接应用于服务器配置文件.  最有可能导致问题的指令是 ，它阻止HTML和PHP文件作为HTML和 ，这将阻止PHP文件在服务器上被解析和执行.
 * 在MediaWiki 1.27之前，如果您有一个自定义404处理程序来使用脚本生成缩略图，则此.htaccess文件中的重写规则可能会禁用以前的规则，因为它缺少 选项（）.

设置上传开启/关闭
在MediaWiki 1.5及更高版本中，要设置的属性位于中，设置如下：

要禁用上傳功能，请将该属性设置为false：

在旧版本的软件中，要设置的属性位于''中，但是是向后的，即. 默认如下所示：

反转值以启用上传：

使用一个中心存储库
InstantCommons是一项功能，通过配置更改启用，可让您立即访问维基共享资源中的数百万免费（免费许可）文件.

上传权限
默认来说，所有已注册用户都可以上传文件. 要限制它，你必须改变：


 * 防止普通用户上传文件：


 * 要创建一个名为“uploadaccess”的特殊组，并允许该组的成员上传文件：


 * 允许自动确认用户上传文件：

替换现有文件的权利由额外的权限处理，称为 :


 * 防止普通用户覆盖现有文件：


 * 允许自动确认用户覆盖已存在的文件：

如果设置了ForeignFileRepo，则在本地替换这些文件的权限由特殊权限处理，称为 ：


 * 防止普通用户在本地覆盖filerepo文件：


 * 允许自动确认用户在本地替换filerepo文件：

有关用户权限的详细信息，请参阅Manual:User rights，有关限制访问权限的详细信息，请参见Manual:Preventing access.

设置文件种类
您可以在LocalSettings.php中添加$wgFileExtensions以允许上传其他所需的文件类型. 例如，您可以将$wgFileExtensions行更改为类似的内容

或

或

但是，某些文件扩展名被列入黑名单（$wgFileBlacklist），即使添加到$wgFileExtensions也无法上传. 要上传带有黑名单扩展名的文件，您必须修改黑名单. 例如，允许用户上传可执行文件：

另外，$wgMimeTypeBlacklist根据MIME类型防止某些文件类型，例如，基于MIME类型（MediaWiki版本1.14至1.17）禁止.zip文件.

你也可以设置

允许上传大多数类型的文件. 但是，仍然不允许列入黑名单的文件类型和MIME类型.

如果您收到错误“文件已损坏或扩展名不正确”，请确保MIME类型检测正常工作.

如果您决定允许任何类型的文件，请确保您的mime检测正在运行，并考虑启用.

要启用zip扩展名（在MediaWiki v1.19.23中测试），LocalSettings.php文件中需要以下内容：

登录
默认情况下，不允许匿名上传. 您必须先注册并登录，然后才能在工具箱中显示“上传文件”链接.

图片缩略图
有关图像自动显示/以缩略图显示的信息,请参见. 有关缩略图的问题，请参阅图像缩略图无法正常工作和/或出现.

如果文件不是可视的（如图像或视频），则使用文件图标. 这些是由FileRepo组的File类中的 函数生成的. 存储在" "中的图标，格式为" ".

为文件上传设定最大限制
Browsers tell the server the size of the file to be uploaded before it actually sends the file.

If the upload is too big, it is rejected by the target (server) and the upload fails providing multiple errors depending at which layer the limit was imposed:


 * If it's a server limit (nginx, Apache) on the maximum amount of transmitted data, it may simply fail with a HTTP 500 error or HTTP 413 – Request entity too large.

默认情况下，中的配置代码将要上载的文件大小限制为2M（并将后期操作的最大大小限制为8M）. 要允许上传更大的文件，请在php.ini中编辑这些参数：
 * If the limit it's at the PHP level, if post_max_size is hit, you may get a generic HTTP 500 error (or simply a blank page) otherwise, MediaWiki should give a more meaningful error message.
 * ，默认为8M
 * ，默认为2M

这可能需要服务器的root用户权限. （如果您在共享主机上，请与服务器管理员联系. ）

php.ini文件的位置因您使用的发行版而异. （尝试找到php.ini或php -i来查找配置文件的位置. ）
 * 找到php.ini文件

更改apache2文件夹中的php.ini文件很重要. 例如， 上可能有一个核心默认php.ini，以及. 如果您使用的是mod_php（最常见），那么正确的php.ini文件最可能的位置是 或. 对于php-fastcgi，编辑/etc/php5/cgi/php.ini.

如果您在服务器上托管了多个网站，并且只想更改Mediawiki，请在中插入/etc/apache2/sites-enabled/your_wiki_site.com：
 * 同一服务器上架设的多个网站

如果您的网站使用mod_php，则上述设置也适用于.htaccess文件. 如果您的站点使用PHP>=5.3并允许它，您可以在中放置php.ini指令代替.


 * web服务器限制

您的Web服务器可能会对允许上载的文件大小施加进一步的限制. 对于Apache，其中一个相关设置是“LimitRequestBody”. For Nginx, client_max_body_size is the relevant setting. For Lighttpd, server.max-request-size is what may need modification.

Ubuntu 16.04:

（例如，sudo /etc/init.d/php5-fpm在Linux中重启. ）


 * 上传太大的文件警告

如果您尝试上传大于选项指定的文件，MediaWiki本身会发出警告. 这与PHP强加的硬限制无关.

上传限制的临时更改（例如，在服务器场上使用多个wiki时）可以通过添加以下行来更改：
 * 临时上传限制

到每个wiki的MediaWiki LocalSettings.php配置文件. 在这个例子中，PHP限制被设定为50MB. 请注意，这些设置不会覆盖上面设置的最大设置（因为核心php.ini和apache2 php.ini文件设置了绝对最大值）. 此方法设置小于绝对最大值的最大值.


 * IIS7 上传限制

  

使用上面的maxAllowedContentLength，用户可以上传大小为50000000字节（50MB）的文件. 此设置将立即生效，无需重新启动IIS服务. web.config文件位于网站的根目录中.

允许最大到 2G 的文件上传:

将以下文本加入至LocalSettings.php：

并且， 修改 这些行在PHP.INI中:

在IIS web.config文件中，覆盖maxRequestLength的值. 例如，web.config中的以下条目允许上载小于或等于2GB的文件：

使用IIS 7，您还需要将其配置为允许大型上载. 通过单击窗口中间的IIS部分中的“请求筛选>编辑功能设置”可以找到此问题. 将“允许的最大内容长度（字节）”字段设置为2147482624. 如果在IIS部分中未看到请求筛选，则需要通过控制面板中的打开或关闭Windows功能区域中的Internet信息服务→万维网服务→安全性启用它.

如果上述提示未启用大型上载，则打开命令提示符并执行此命令：

允许 Java JAR 上传
默认情况下，MediaWiki将扫描所有看似ZIP存档的上传，并拒绝任何包含Java.class文件的上传. 这是一种防止用户上传恶意Java小程序的安全措施. 仅限非公共网站，请使用以下内容禁用此检查：

此设置可用作允许不加区别地接受mimetypes的解决方法. 例如，如果您尝试上载Word 2007创建的.doc文件，无论您提供的文字列表和您调用或禁止的mimetype检查，您都会收到以下消息：


 * 该文件是损坏的或其他不可读的ZIP文件，无法正确检查安全性. 

由Word 2007（以及可能的更高版本）保存的.doc文件包含一个小的嵌入式ZIP存档，存储的元数据不能以早期版本的Word使用的二进制.doc格式表示. 此嵌入的ZIP数据会混淆Java归档扫描程序，导致.doc文件被拒绝. 较新的.docx文件格式的文件是完整的有效ZIP存档，可以成功上载而无需设置.

直接从 URL 上传 ("Sideloading")
如果要允许用户直接从URL上载文件，而不是从本地计算机上的文件上载，请设置.

默认情况下，只能使用API（或上传向导等扩展）按URL上传. 要使选项在Special:Upload中可用，您需要将$wgCopyUploadsFromSpecialUpload设置为true. 在上传表单中，您将看到URL的附加字段，位于通常的文件名字段下方. 默认情况下，URL字段显示为灰色，但可以通过激活字段左侧的单选按钮（复选框）来激活.

要使用此功能，用户必须拥有user right. 默认情况下，此权限被授予管理员，直到MediaWiki 1.20，但现在需要明确授予它. 要对于普通用户允许这个，设置 请注意，允许直接从网络上的任意位置上传，可以更轻松地上传随机的，不需要的内容，并且可能会被误解为上传人们可能在网络上遇到的任何内容的邀请.

恢复删除图像
自MediaWiki 1.8以来，可以选择取消删除图像作为选项，默认情况下启用MediaWiki 1.11.

在MediaWiki 1.11之前，您可以通过设置 来启用图像的取消删除. 从版本1.11开始，行为由$wgFileStore控制，删除的文件默认存储在$wgUploadDirectory/deleted中. 从版本1.17开始，$wgFileStore已被弃用，而应使用.

大规模上传
有许多工具可以一次上传多个文件，而不是分别上传每个文件：

上传目录
每当上传图像时，都会创建几件事：


 * 1) 文件命名空间中的文章，其中包含文件名，例如文件:MyPicture.png. 此页面已存储，可以像任何其他页面一样进行编辑.
 * 2) 文件本身存储在文件系统的文件夹中，该文件系统在中配置，或者在其子文件夹中配置为一个（见下文）.
 * 3) 如果可以使用缩略图，将创建该文件的缩略图版本（例如，在文件描述页面上使用）. 它们存储在图像目录的缩略图目录中，位于每个主文件的单独目录中.

如果启用$wgHashedUploadDirectory（默认情况下），MediaWiki会在images目录中创建多个子目录.

如果 设置为 ，则上传的文件将根据文件名的md5哈希的前两个字符分发到$wgUploadDirectory的子目录中（例如$IP/images/a/ab/foo.jpg）. 创建这样的子目录是自动处理的. 这用于避免在一个文件夹中包含太多文件，因为某些文件系统在一个文件夹中对大量文件执行效果不佳.

如果您只维护一个包含很少上传图像的小维基，可以通过设置 来关闭它，所有图像都会上传到$wgUploadDirectory本身（例如$IP/images/foo.jpg）.

多维基站点
不这样做会神秘地破坏图片上传.
 * 确保您已更改LocalSettings.php中的网站位置，例如/var/lib/mediawiki到你的安装所在的位置，并创建一个可写图像目录（其余大部分都可以进行符号链接）.

配置上传表单
随默认的MediWiki安装提供的上传表单消息（当您单击“上载文件”链接或转到Special:Upload链接时出现）可能不太适合您.

在这种情况下，您可以编辑MediaWiki:Uploadtext内容并提供自己的文本. 如果您的维基站点是多语言，请不要忘记编辑MediaWiki:Uploadtext/de等本地化版本.

在MediaWiki:Licenses页面上，您可以自定义上传站点许可证的下拉列表.

考虑到默认情况下MediaWiki:Licenses/de等本地化版本不起作用. 要启用它们，您必须配置变量.

编辑MediaWiki:Upload-default-description以将初始文本添加到上载表单的摘要字段中（例如，您的Wiki站点具有用于上载摘要的通用模板，并且您希望每个人都使用该模板）.

参见：

Windows 上的已知问题
由于PHP错误，在Windows服务器上运行MediaWiki在允许的文件名中有一些限制. PHP无法正确处理包含非ascii字符的文件名，MediaWiki将拒绝上传包含此类字符的文件，以防止上传内容（），消息为.

因为MediaWiki 1.31及更高版本可以处理带有非ascii字符的文件名，如果它使用的是PHP 7.1或更高版本.

具有非字母数字字符的数据库名称的已知问题
如果 包含非字母数字字符，则上传可能会失败，并出现错误，例如 无法创建目录"mwstore://local-backend/local-public/&lt;path&gt;". . 这是由内部检查文件后端的有效容器名称引起的，但它是使用 $wgDBname 构造的.

从MediaWiki 1.26开始，当 $wgDBname 包含点时，它允许上传.

参见

 * 安全部分上传安全性
 * 手册:配置设置#上傳获取与文件上载相关的所有配置变量的列表
 * - 类似的列表（按英文字母排列）
 * 你看到一个空白页面在尝试上传文件时