在用PHP进行文件上传的操作中,需要知道怎么控制上传文件大小的设置,而文件可传大小是受到多种因素制约的,现总结如下: 2、php.ini:memory_limit 本指令设定了一个脚本所能够申请到的最大内存字节数,默认值8M。如果不需要任何内存上的限制,必须将其设为 -1。如果内存不够,则可能出现错误:Fatal error: Allowed memory size of X bytes exhausted (tried to allocate Y bytes) 3、php.ini:post_max_size 设定POST数据所允许的最大大小。此设定也影响到文件上传。要上传大文件,该值必须大于 upload_max_filesize。 4、php.ini:max_execution_time = 30 ; Maximum execution time of each script, in seconds 5、php.ini:max_input_time = 60 ; Maximum amount of time each script may spend parsing request data 6、如果用到mysql的BLOB进行二进制文件存储,则需要设置my.ini:max_allowed_packet=xxM 7、httpd.conf
LimitRequestBody 1024000000Options Indexes FollowSymLinks MultiViews ExecCGIAllowOverride AllOrder allow,denyAllow from all 如果透过 .htaccess 设定,储存档案后会立即生效;如透过 httpd.conf 设定,须要重新启动 Apache。
Send this file: 这里设置MAX_FILE_SIZE = 30000,期待一种可能,使得浏览器在传送文件之前能够依此作出预先判断,如果文件尺寸大于30000字节,则不执行实际的POST动作。也就是不往服务器发送文件内容,而是直接在客户端提醒用户“你试图上传的文件超过30000字节”。 MAX_FILE_SIZE还有一个用场:后台PHP会判断接收到的文件大小是否大于这个值,如果超出,$_FILES['thisfile']['error']会被设置为UPLOAD_ERR_FORM_SIZE(2),同时放弃保存临时文件,将$_FILES['thisfile']['size']置0。
问题就出在main/rfc1867.c中判断文件是否超长的这部分代码上。php每次从buffer中读取FILLUNIT字节长度的内容后,首先判断“已经读到的内容长度(total_bytes)”是否大于MAX_FILE_SIZE,然后再增加“已经读到的内容长度(total_bytes)”。这样一来,和预计的结果之间至多会有FILLUNIT字节的误差,而FILLUNIT=1024*5=5K。(点击bug了解详细内容) |
相关文章
- 01-28FTPClient上传文件大小为0字节但不报错的问题顺利解决
- 01-28自定义elment-ui中的el-upload组件上传列表显示及进度条问题及base64转码
- 01-28使用element上传图片的时候的限制只上传一个的问题
- 01-28(转)php-curl响应慢(开发微信授权登陆时碰到的问题)
- 01-28struts2解决动态多文件上传的问题(上传文件与数据库字段一一对应)(转)
- 01-28关于php 5.5以上 CURL上传的问题(微信"errcode":41005,"errmsg",)
- 01-28[转]javascript实现限制上传文件的大小
- 01-28[转]通过设置nginx的client_max_body_size解决nginx+php上传大文件的问题
- 01-28通过设置nginx的client_max_body_size解决nginx+php上传大文件的问题
- 01-28zt对于C#中的FileUpload解决文件上传大小限制的问题设置