HostMonster:改变上载文件大小限制
出自美国主机知识库
我如何改变上载文件大小最大限制?
简单地说:
- 找到你上传脚本的文件夹里的php.ini文件。如果不存在,创建一个新的文本文件命名为php.ini
- 在php.ini文件里找到这样一行'upload_max_filesize = 2M'
- 修改成'upload_max_filesize = 10M',或者你的脚本需要的(M=兆字节)
- 完成
-------------------------------------------------------
扩展版本:
按照这篇指南将php.ini文件放在任何执行该文件的目录里。
如何最优化你的PHP安装来处理大文件上传
虽然PHP提供一个很全面的用户友好的界面来处理文件上传,默认安装并不提供对超过2M字节文件的支持。这篇文章是用来帮助配置PHP以处理大文件传输。
php.ini
php.ini文件包含了安装的所有配置设定。有些时候这些设定会被.htaccess文件甚至自身脚本里的一些指令覆盖掉,现在我们把注意力集中在ini文件上。
文件包含以下需要我们修改的设置:
- file_uploads 文件上传
- upload_max_filesize 最大上传文件大小
- max_input_time 最大输入时间
- memory_limit 内存限制
- max_execution_time 最大执行时间
- post_max_size 最大能提交的文件大小
关闭第一项的结果十分明显,你的安装将会禁止上传。下面的内容会详细涉及到其余的配置。
最大上传文件大小和最大能提交的文件大小
文件通常以一种叫做'multipart/form-data'的形式提交给浏览器。最大能提交的文件大小设定了脚本以这种方式能接收到数据量的上限。理想状态下,这个值要比最大上传文件大小要大。
有一点意识到是很重要的,最大上传文件大小是你上传的所有文件的大小的总和。最大能提交的文件大小是最大上传文件大小加上表格里其他几个的长度和加上编译器可能包括的协议头文件。由于其他几个都很小,你可以近似认为最大上传文件大小等于最大能提交的文件大小。
根据PHP文档你可以在HTML表格里设置MAX_UPLOAD_LIMIT(最大上传限制)以向浏览器提出这个限制。我们的理解是浏览器完全忽视这个指令,唯一可以瞒过这个客户端限制的办法是Rad Upload Applet。
内存限制
当PHP引擎处理一个外来的POST时,需要将一些数据保存在内存中。只要你在配置的时候使用了--enable-memory-limit选项,这个指示就有效果。值设置得太高会非常危险,因为如果多个上传同时进行,所有可用的内存都会被耗尽,其他相关的消耗大量内存的脚本同样可以影响这个服务器。
最大执行时间和最大输入时间
这些设置定义了脚本的最大寿命和脚本接收输入的时间。如果有数兆字节的数据在传输,最大输入时间相应的就应该很高。通过在脚本里调用函数set_time_limit(),你可以覆盖ini文件里有关最大输入时间的设定。
特殊注意事项
Apache设置
Apache网络服务器有一项LimitRequestBody配置指令限制所有提交数据的大小,而不管网络脚本是用什么语言写的。一些RPM安装将限制请求大小设定为512Kb。你需要将其改为更大的值或者干脆整个移除。
其他选项
如果你希望你的站点处理大量文件的同时传输,在服务器端使用perl或java组件。PHP是最受欢迎的网络编程语言,但是当涉及到文件处理时perl更有优势。
大多数作为apache模块安装的perl可以接受最高达32兆字节的传输。和PHP默认的2MB作一下对比。唯一的不足是perl代码的效率比PHP低一些,但是这绝对物有所值。