PHP文件上传错误概要
第一次写博客,最主要平常也用markdowm写笔记,csdn也是,搞的我有点审美疲劳,瞅一眼这个编辑器都难受😫
正文
假设你input的name是uploadFile,那么她(没错,代码虐我千万遍,我待她依旧如初恋)在php对应的信息打印出来就是这样的:
name type size 就不BB了,主要是error的值:
error => 0
没有错误文件上传成功,然后tmp_name 会记录着临时存储位置,从这里移动到你想要的位置,再给个名字就好了(个人比较喜欢用rename,超好用!!!!)
error => 1
即是UPLOAD_ERR_INI_SIZE,就是文件比php.ini里设置的大小大,不允许,解决也很简单,去ini调整upload_max_filesize 的大小
error => 2
这个是因为超过了HTML表单设置的最大值 也是去调整ini里的post_max_size
error => 3
文件上传不完整,我一般还没遇到过,不过大小限制没问题的话,只剩下个时间问题了,可能超过了ini里的max_input_time设置的最大时间,(我刚刚在想磁盘满了会不会也是这个错误哈哈哈)
error => 4
这个简单,没文件传上来,看下是不是写岔了,指定的name没对上选择文件的那个
error => 6
这个是没找到临时文件夹,就是那个tmp_name对应的文件夹,这个咋说呢,我也没遇到过,不过这种一般都是因为那个文件夹没有,完事php也建立不了,为什么建立不了,那就十有八九是阿帕奇使坏了,哈哈哈,看看也没有权限啥的,因为有很多人为了服务器安全,打开了一些安全配置啥的,就很容易发生这种事情。(IIS大法好,直接一顿点击就完事了,当然我工作接触IIS也就半年多,但我感觉还是在linux上舒服)
好啦,再附上些有关的php.ini的设置:
file_uploads
HTTP上传文件的开关,默认为ON
upload_tmp_dir
就是那个tmp_name的路径了,一般都是默认的,在服务的根目录那有个tmp,也可以自己改
upload_max_filesize
允许上传文件大小的最大值,默认是2M(我一般改到8
post_max_size
就是上面有说的表单的最大值,一般要设置的比upload_max_filesize要大
max_input_time
上面说的表单提交的时间,单位是S 秒
memory_limit
这个应该很多人知道,就是内存溢出的话,如果程序写的很OK,那就老老实实来改大一点,这个也要设置的比上传文件(upload_max_filesize)那个大,(我现在工作的公司,因为搞工业互联网的,数据产量啊,都是上万,上次我各种优化sql,变量,最终只有一万两千多条,结果前端还渲染不出来。。。。。,然后我组长只好,直接把memory_limit改到了150M)
max_execution_time
这个需要根据需求来,假设,后台生成一个xls需要60s,而你设置的是50s,那就会造成还没生成就被关掉,,但是你总有需要把他改成30s的时候,一般推荐可以用 ini_set(‘max_execution_time’, ‘xxx’)(以上的都可以用这个,毕竟你不可能会永远修改ini的权利,ini_set的话只会设置此次脚本