# 如何修改Moodle上传文件大小的限制

**URL:** <https://www.isharkfly.com/t/moodle/3897>\
**Category:** PHP\
**Created:** [September 22, 2012, 2:59am UTC](https://www.isharkfly.com/t/moodle/3897 "2012-09-22T02:59:02Z")\
**Posts on this page:** 1\
**Page:** 1

<div class="post-metadata">

**Author:** ![honeymoose](https://www.isharkfly.com/user_avatar/www.isharkfly.com/honeymoose/32/20796_2.png) [@honeymoose](https://www.isharkfly.com/u/honeymoose)\
**Post date:** [September 22, 2012, 2:59am UTC](https://www.isharkfly.com/t/moodle/3897/1 "2012-09-22T02:59:02Z")

</div>

一般来说，Moodle 系统中有四种级别的文件限制

- system level (php.ini)
- moodle level (admin-\>Config -\>Site variables-\>maxbytes)
- course level (Course settings-\>Max Upload size)
- activity level

至上而下，上一级别的优先级高于下一级。也就是说，下一级别的文件限制的大小不能超过上一级别。  
比如说，你不能设置 php.in 的文件限制为8 mb 而 moodle level 的文件限制为 10 mb。

影响上传文件是否成功有以下两个原因:

1. Moodle 的服务器配置 (php.ini, apache version, php version etc, hardware and network connectivity)
2. Your client-to-server bandwidth connection 宽带连接的速度  
修改文件大小的限制  
假设你需要把文件的限制改为 12MB , 可以在php.ini 中修改以下的参数

upload\_max\_filesize = 20M ; （默认是2M ）  
max\_execution\_time = 300 ; （ 默认是 30 [seconds] ）  
post\_max\_size = 12M ; （ 默认是 8M ）

按照这个方法是可以成功，但是，记得再改完以后，要重启服务哦。

注意：：：这个php.ini是apache2目录下的php.ini……

* * *

moodle1.83升级到1.85+微调  
不升级即到1.9，因为有一部份中文化有问题，1.85已经解决中文课程名称了。  
1.下载最新版，解压到新目录  
2.下载中文，放lang/zh\_tw\_utf8  
3.复制config.php到新目录，更改新路径  
如果移机还要把moodledata/sessions里的东西全部清掉  
4.启动后，登入ADMIN即可更新  
5.顺便安装额外的 Curl 函式库、 OpenSSL 函式库、xmlrpc  
cd /usr/ports/lang/php4-extensions  
make config  
make deinstall  
make reinstall (不先deinstall可能会失败)  
6.安装防毒(上传档案时检查)/usr/ports/security/clamav make install

如果要保存原来mysql数据，先复制一份，将database前导符修改，配合config.php  
这样不算升级，算是复制后升级，保留原来档案。

微调：  
1.[/usr/local/share/mysql] # cp my-medium.cnf my-small.cnf 不够的话下次调my-large.cnf  
Linux 则是把my-huge.ini 复制给my.ini  
2.将教师权限改成可还原(更改)学生密码.  
在网站管理(区块)-\>用户-\>权限-\>定义角色中，把教师的权限中(在下方)，  
里面有个「更新使用者数据」开为允许即可。  
3.禁止/避免学员修改姓（由管理员大量建制账号的改『只允许手工添加账号』）  
STEP1：网站选单–\>用户–\>身分认证–\> 选择『电子邮件确认』后方(课程设定)  
STEP2： 将您要禁止修改的字段，选定为【已锁定】  
STEP3： 储存后，使用者将无法编辑这些字段。  
4.让开课教师或(教师)上传作业，不然教师没法示范上传作业  
网站管理＿用户＿权限＿定义角色＿开课教师（教师）＿权限＿作业＿缴交作业＿允许＿储存更改。  
5.让中文档名可上传：  
先改config.php中再加入$CFG-\>unicodecleanfilename = true;  
接着修改 file.php，把最后几行有一个 //$filename = $args[count($args)-1]; 批注掉  
6.账号窗体的国家的默认值先设成『台湾』  
修改程序 moodle/login/signup\_form.php  
约49行 $mform-\>setDefault(‘country’, ‘’);  
更改为 $mform-\>setDefault(‘country’, ‘TW’);  
7.学生上传档案大小限制改32MB  
先改php.ini: post\_max\_size = 32M  
upload\_max\_filesize = 32M  
memory\_limit = 32M  
再改moodle网站设定: 33554432 (32MB = 32x1024x1024 bytes)  
记得更新课程设定  
8.重新上传汇入学生资料，上次中文姓名没成功，先用phpMyAdmin删除user，再网络爬文：  
修改程序admin/uploaduser.php  
约第190 行, 主要使用 iconv(‘big5’,‘UTF-8’,“\*\*\*\*\*\*”) 來转换资料编码为UTF- 8  
185～186批注掉：  
// else if ($name == “username”) {  
// $user-\>username = addslashes(moodle\_strtolower($value));  
// }  
其实把档案用ConvertZ.exe转big5成utf8格式就OK了

PS：php.ini 在哪里 ( 可以用 phpinfo(); 查出来  
以 XAMPP 包装( for Wondows)为例，真正使用的 php.ini档案放在 apache/bin 目录中，而非php 目录里面的那一个。  
FreeBSD 的php.ini 在 /usr/local/etc  
Ubuntu 的php.ini 在 /etc/php5/apache2/php.ini  
CentOS maybe in the /etc/php.ini
