发新话题
打印

php $_FILES上传图片附件失败|服务器限制无法上传那么大的附件

php $_FILES上传图片附件失败|服务器限制无法上传那么大的附件

公司论坛上传附件的时候报错,昨天还好好的,今天就上传不了,各环境没做任何修改,磁盘空间也没满,但报UPLOAD_ERR_NO_TMP_DIR: 6,(其他报错UPLOAD_ERR_OK: 0,UPLOAD_ERR_INI_SIZE: 1,UPLOAD_ERR_FORM_SIZE: 2,UPLOAD_ERR_NO_TMP_DIR: 6,UPLOAD_ERR_CANT_WRITE: 7,UPLOAD_ERR_EXTENSION: 8,UPLOAD_ERR_PARTIAL: 3)后来在运维的帮助下查出来,原来是linux文件索引用完了,删除无用的信息,可以正常上传了。
以下是其他可能出现的失败原因:

1、服务器磁盘满了

这种情况常常表现为前台提交表单成功,附件并没有上传上去,附件目录里刚刚上传的附件的大小为 0。当然了,这种情况很少。

2、附件目录没有写权限

上传附件的时候要求附件目录有写权限,否则上传失败。
解决方法:
1)如果服务器是 Linux 主机,请将附件目录的权限设置为 777,并将权限继承到附件目录的下级目录;
2)如果服务器是 Windows 主机,请设置附件目录 IIS 来宾账户(或者运行这个站点的 IIS 账号)写权限,并继承到附件目录的下级目录。
其实啊,安装完以后只要保留以下3个目录可写就可以了
/data
/uc_ucserver/data
/uc_client/data

3、系统临时目录的权限有问题

这种情况主要发生在 Windows 主机上。一般情况下,需要设置 IIS 来宾账号(或运行IIS的账号)对系统临时目录有写权限,这个容易被忽略

4、系统临时目录temp满了

在 php.ini 中没有设置上传临时目录的情况下,系统会将上传到服务器的文件放在系统的临时目录里(Windows 服务器的系统临时目录是 c:\Windows\TEMP;Linux 的系统临时目录是/tmp),这个目录满了,上传文件就会失败。
解决方法:将系统临时目录清理一下。

5、PHP 临时目录的问题(这个我没遇到过,整理于网络)

在 php.ini 中,可以通过 upload_tmp_dir 的值,来设定通过PHP程序上传的文件的临时目录,如果这个目录满了或者权限有问题,也会导致上传附件不成功。
解决方法:
1)如果设置的临时目录满了,清空一下这个目录
2)设置临时目录运行 IIS 来宾账号(或运行IIS的账号)写权限

6、上传的附件大小超过了系统允许的附件大小或者超出了允许提交表单的大小

1)服务器允许上传的附件大小和允许提交表单的大小分别是通过php.ini中的upload_max_filesize、post_max_size设定的,默认大小分别是 2M、8M,如果上传的附件的大小和表单的大小超过了这两个参数设置的大小,就会出现上传附件不成功的情况。
解决办法:适当改大upload_max_filesize这个参数的值(如果上传的附件超过 6M,建议使用 ftp 或者其他方式上传),然后重新启动一下 web 服务器软件。
2)到后台看看有没有禁用这类附件的上传

7、空间商限制了目录属性

有些空间限制了目录属性,导致在附件目录下建立子目录时失败

8、Apache配置文件中设置了 open_basedir

如果您的 web 服务器是 Apache 的话,可以在的配置文件里指定 open_basedir 参数来限制 Apache 能够访问的目录,如果指定了这个参数,可能导致上传附件不成功。
解决办法:将系统的临时目录或者 php.ini 中 upload_tmp_dir 参数设置的目录、附件目录添加到 open_basedir 设置中或者将这个参数注释掉(慎用),然后重新启动 Apache 。

TOP

发新话题