Friday, October 20, 2017

修改PHP上传文件大小限制

一、限制PHP上传文件大小的因素

在用PHP进行文件上传的操作中,需要知道怎么控制上传文件大小的设置,而文件可传大小是受到多种因素制约的,现总结如下:

1、php.ini

upload_max_filesize 所上传的文件的最大大小。默认值2M。

memory_limit 本指令设定了一个脚本所能够申请到的最大内存字节数,默认值8M。如果不需要任何内存上的限制,必须将其设为 -1。如果内存不够,则可能出现错误:Fatal error: Allowed memory size of X bytes exhausted (tried to allocate Y bytes)

post_max_size 设定POST数据所允许的最大大小。此设定也影响到文件上传。要上传大文件,该值必须大于 upload_max_filesize。

max_execution_time = 30 ; Maximum execution time of each script, in seconds

max_input_time = 60 ; Maximum amount of time each script may spend parsing request data

2、MySQL/MariaDB

如果用到MySQL/MariaDB的BLOB进行二进制文件存储,则需要设置my.ini:max_allowed_packet=xxM

3、httpd.conf

在 Apache 里面有一个选项是 LimitRequestBody,这个选项可以限制用户送出的 HTTP 请求内容。这个选项可以在 .htaccess 或 httpd.conf 里使用,而如果在 httpd.conf 内使用,分别可以用在 virtualhost 或目录属性设定。而 LimitRequestBody 的设定值是介乎 0 (无限制) 至 2147483647 (2GB)。
例如要在目录 D:/AppServ/www 设定上传限制为 100K,可以在 .htaccess 或 httpd.conf 加入以下语句:

如果透过 .htaccess 设定,储存档案后会立即生效;如透过 httpd.conf 设定,须要重新启动 Apache。

二、通过Webmin修改PHP上传文件大小限制

除了可以使用Putty和WinSCP等软件连接VPS修改上述文件之外,还可以使用主机面板如Webmin/Virtualmin来修改,方法如下:

Webmin ==> 其他 ==> PHP Configuration ==> Manage ==> Resource Limits

Virtualmin ==> 服务 ==> PHP 5 Configuration ==> Resource Limits

Leave a Reply

Your email address will not be published. Required fields are marked *