近几天,小幸用php帮别人开发一个web应用,其中需要简单用到上传,在上传时我发现当上传的文件过大时就会导致上传失败,甚至导致普通文本域都不能正常上传,遇到这个问题我就知道是php.ini在捣鬼了,因为环境会默认限制上传的大小,以防止恶意的行为导致服务器端不可承受。于是小幸打开php.ini查看了一番。发现如下几个跟上传相关的字段:

  1. file_uploads 是否允许通过HTTP上传文件的开关。默认为ON即是开
  2. upload_tmp_dir – 文件上传至服务器上存储临时文件的地方,如果没指定就会用系统默认的临时文件夹
  3. upload_max_filesize 允许上传文件大小的最大值。默认为2M
  4. post_max_size 通过表单POST给PHP的所能接收的最大值,包括表单里的所有值。默认为8M

于是,我们通过如下设置,就可以上传不超过2G的文件了:

file_uploads on
upload_max_filesize 2048M
post_max_size 2049M

请注意,修改php.ini文件后记得restart all server.
另外,可以通过count($_FILES)来判断是否正常上传了,若该值为0即表示上传的文件大小超过了设置的阈值而未成功上传,修改配置文件或者做相应提示即可。

更多推荐

解决PHP上传文件时大小受限制问题