在正常情况下,Nextcloud的默认的最大上传限制为512MB,在你的的文件系统和操作系统允许的前提下,你可以提升这一限制。换一种说法,能上传的最大文件的大小还取决于你的浏览器和操作系统:
在64位系统中允许上传更大的文件,具体能上传多大仍然取决于你的操作系统的版本。
nextcloud/.user.ini
中。
在.htaccess文件中中设置以下参数,可将上传文件大小限制设置为16GB:
php_value upload_max_filesize = 16G php_value post_max_size = 16G
当然,具体要设置为多少取决于你的需求。
而另一个限制了大文件的上传的因素是PHP的超时(timeout),如果你在日志中看到超时的记录,可以将PHP的超时的数值调得大一些:
php_value max_input_time 3600 php_value max_execution_time 3600
说到timeout,不仅PHP会有timeout,HTTP服务器也会有。例如Apache的
mod_reqtimeout
模块,它也可能会导致大文件上传的失败。如果你在使用这个模块并且遇到了超时的问题,那么可以考虑在Apache配置中禁用它:
使用命令禁用:
a2dismod reqtimeout
service apache2 restart
或者直接删除该模块的配置文件:
rm /etc/apache2/mods-enabled/reqtimeout.*
service apache2 restart
(实际环境中Apache的安装方式可能有所不同,禁用该模块方式也可能不同)
除了上文所述的会限制到大文件上传的地方,一些HTTP服务器的配置也会影响到大文件的上传:
1.LimitRequestBody:这项配置一般在Apache做反响代理服务器用到,具体用法是在Apache配置文件中加上这样一句(后面所跟的数值的单位为K):
LimitRequestBody 102400 #允许上传最大为100k的文件
2.SSLRenegBufferSize:在进行SSL握手之前,Apache会将请求先存放到缓冲区中,这项配置决定了缓冲区的大小:
SSLRenegBufferSize 262144 #缓冲区大小为262144Bytes
Nginx中有这样几个影响上传文件的配置选项:
client_max_body_size 512M; #最大请求实体为512M
fastcgi_buffers 64 4K; #为小于256k的PHP页面分配64个4k缓冲区
fastcgi_read_timeout 60 #超时时间为1分钟
client_body_temp_path /spool/nginx/client_temp 3 2; #请求实体临时路径 3、2为存放临时文件的目录名的数字位数
fastcgi_request_buffering off;
如果Nginx作为反向代理服务器,那么还会有这样两项配置与之有关:
如果你不想使用Nextcloud的.htaccess或.user.ini文件,也可以直接去修改PHP的配置,如果要这样做,确保注释掉.htaccess中的与文件上传有关的那几行。如果您在32位系统上运行Nextcloud,则您的php.ini文件中的任何open_basedir指令都需要注释掉。
在php.ini中设置下面的两个参数,以修改最大文件上传限制为16G(或其他数值):
upload_max_filesize = 16G post_max_size = 16G
为PHP设置你想使用的临时目录的位置,例如:
upload_tmp_dir = /var/big_temp_file/
输出缓冲必须在.htaccess或.user.ini或php.ini中关闭,否则返回与内存相关的错误:
output_buffering = 0
如果你无法修改php.ini,那么你也可以在config.php中指定
upload_tmp_dir
的值,例如在文件中加入这样一行:
'tempdirectory' => '/var/big_temp_file/',
详细的内容可以参见官方文档中关于config.php的介绍。
如果在config.php(参见Config.php参数)文件中配置了session_lifetime设置,那么请确保它不是太低。此设置需要至少配置为最长上传时间(以秒为单位)。如果不确定,就从配置中完全删除它,将其重置为config.sample.php中显示的默认值。
说了这么多,最简单的方法还是在管理页面中直接修改上传大小(这个途径受制上文中所有内容):
前提是.htaccess文件正常工作。
额,你可能遇到这样的尴尬的情况:
将.htaccess文件的用户设置为www-data就可以了:
chown www-data .htaccess
本文由 橙叶博客 作者:FrankGreg 发表,转载请注明来源!
大佬,请问nginx的fastcgi_request_buffering off具体怎么执行(在宝塔下极速安装的nginx)?
需要找到nginx的配置文件,我没用过宝塔,你可以百度搜索一下宝塔上安装的应用会把nginx的配置文件在哪里
大神打扰一下,最近才入nextcloud
可以帮忙看一下这个问题么?
Sabre\DAV\Exception\BadRequest: expected filesize 10000000 got 5338434
/share/CACHEDEV1_DATA/.qpkg/NextCloud/nextcloud/apps/dav/lib/Connector/Sabre/Directory.php – line 156:
OCA\DAV\Connector\Sabre\File->put(null)
/share/CACHEDEV1_DATA/.qpkg/NextCloud/nextcloud/apps/dav/lib/Upload/UploadFolder.php – line 45:
OCA\DAV\Connector\Sabre\Directory->createFile(“00000005”, null)
/share/CACHEDEV1_DATA/.qpkg/NextCloud/nextcloud/3rdparty/sabre/dav/lib/DAV/Server.php – line 1096:
OCA\DAV\Upload\UploadFolder->createFile(“00000005”, null)
/share/CACHEDEV1_DATA/.qpkg/NextCloud/nextcloud/3rdparty/sabre/dav/lib/DAV/CorePlugin.php – line 525:
Sabre\DAV\Server->createFile(“uploads/guo … 5”, null, null)
<>
Sabre\DAV\CorePlugin->httpPut(Sabre\HTTP\R … “}, Sabre\HTTP\Response {})
/share/CACHEDEV1_DATA/.qpkg/NextCloud/nextcloud/3rdparty/sabre/event/lib/EventEmitterTrait.php- line 105:
call_user_func_array([ Sabre\DAV\ … “], [ Sabre\HTTP … }])
/share/CACHEDEV1_DATA/.qpkg/NextCloud/nextcloud/3rdparty/sabre/dav/lib/DAV/Server.php – line 479:
Sabre\Event\EventEmitter->emit(“method:PUT”, [ Sabre\HTTP … }])
/share/CACHEDEV1_DATA/.qpkg/NextCloud/nextcloud/3rdparty/sabre/dav/lib/DAV/Server.php – line 254:
Sabre\DAV\Server->invokeMethod(Sabre\HTTP\R … “}, Sabre\HTTP\Response {})
/share/CACHEDEV1_DATA/.qpkg/NextCloud/nextcloud/apps/dav/lib/Server.php – line 316:
Sabre\DAV\Server->exec()
/share/CACHEDEV1_DATA/.qpkg/NextCloud/nextcloud/apps/dav/appinfo/v2/remote.php – line 35:
OCA\DAV\Server->exec()
/share/CACHEDEV1_DATA/.qpkg/NextCloud/nextcloud/remote.php – line 163:
require_once(“/share/CACH … p”)
弄好了吗?
在设置页面上传大小改大之后还是上传错误,在nginx.conf里把client_max_body_size 改成500M就正常了
大神,请教下nextcloud13通过snap安装的,file handing那边灰的,没有编辑权限。怎么解决?
找到根目录下的.htaccess文件,然后把权限改为770,用户为http服务器的用户
查阅了官网nextcloud-snap,”.htaccess”在/snap/nextcloud/XXXX/htdocs下
这个是只读文件系统无法修改,snap的理念似乎不会开放这块的权限
评论邮件回复测试
回复通知测试