在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
php上传文件限制涉及很多方面,大致归纳一下,有如下几个:1、memory_limit //内存设置限制 2、max_execution_time //程序执行时间限制 3、post_max_size //最大POST数据限制 4、upload_max_filesize //最大上传文件大小限制 当然有这几个也不是绝对就限定了上传文件大小,理论上也只是限制最大可能的上传文件大小,因为内存设置还受限于当前可用内存数,程序执行时间受限于当前系统繁忙状态,POST数据大小还受限于POST冗余头或多断上传数,等等,这些因素都会在某个时机会影响到上传文件结果。 所以从逻辑顺序上:memory_limit > post_max_size > upload_max_filesize,再加上一个前提max_execution_time许可时间足够长。 归纳一下,假设上传限制100M字节,则参考设置如下: ; Maximum execution time of each script, in seconds max_execution_time = 30 ; Maximum amount of time each script may spend parsing request data max_input_time = 60 ; Maximum input variable nesting level ;max_input_nesting_level = 64 ; Maximum amount of memory a script may consume (128MB) memory_limit = 128M ;Maximum size of POST data that PHP will accept. post_max_size = 105M ; Maximum allowed size for uploaded files. upload_max_filesize = 100M 一般来讲,上传文件时,首先需要保证上传内存,查看PHP.INI默认配置,memory_limit默认是128M,对一次脚本执行可消耗的内存量。如果上传限制100M,那么这么大的内存量而言足够了(还是一般来讲,比如多文件同时上传可能就会不够)。 调整set_time_limitmax_execution_time默认设置为30秒,对于上传100M文件而言,目前的网络情况来看,30秒要上传100M文件几乎是不可能的,10M带宽完全对称速率,一秒一兆也需要一分半钟。所以这个设置即使调整也难以估算实际执行时间,而且调整太长对APACHE不太友善。 所以建议不要调整max_execution_time,而只是在PHP程序中使用: set_time_limit(0); 进行临时调整。设置0表示没有时间限制。当然从程序执行角度,设置0是解决了超时问题,但其实并非好的解决办法,如果程序支持断点续传,那么设置600秒或3600秒也似乎是个更好的思路,超时时自动断点续传即可。
查找 post_max_size = 2M (默认为2M)改为想要的大小,如:post_max_size = 100M upload_max_filesize 表示所上传的文件的最大值。
|
2022-08-30
2022-08-17
2022-11-06
2022-08-17
2022-08-16
请发表评论