我们有时候会遇到附件上传不成功的问题,下面将常见的一些原因总结一下,供大家参考。
1 、服务器磁盘或购买的虚拟空间满了
这种情况常常表现为前台提交表单成功,附件并没有上传上去,附件目录里刚刚上传的附件的大小为 0 。
解决方法:清理磁盘空间。
2 、附件目录没有写权限
上传附件的时候要求附件目录有写权限,否则上传失败。
解决方法:
1) 如果服务器是 Linux 主机,请将附件目录的权限设置为 777,并将权限继承到附件目录的下级目录;
2) 如果服务器是 Windows 主机,请设置附件目录 IIS 来宾账户 (或者运行这个站点的 IIS 账号) 写权限,并继承到附件目录的下级目录。
3 、系统临时目录满了
在 php.ini 中没有设置上传临时目录的情况下,系统会将上传到服务器的文件放在系统的临时目录里 (Windows 服务器的系统临时目录是 c:WindowsTEMP;Linux 的系统临时目录是/tmp),这个目录满了,上传文件就会失败。
解决方法:将系统临时目录清理一下。
4 、系统临时目录的权限有问题
这种情况主要发生在 Windows 主机上。一般情况下,不用另外设置系统临时目录的权限。特别情况下需要设置 IIS 来宾账号 (或运行 IIS 的账号) 对系统临时目录有写权限
5 、 PHP 临时目录的问题
在 php.ini 中,可以通过 upload_tmp_dir 的值,来设定通过 PHP 程序上传的文件的临时目录,如果这个目录满了或者权限有问题,也会导致上传附件不成功。
解决方法:
1) 如果设置的临时目录满了,清空一下这个目录
2) 设置临时目录运行 IIS 来宾账号 (或运行 IIS 的账号) 写权限
6 、上传的附件大小超过了系统允许的附件大小或者超出了允许提交表单的大小
服务器允许上传的附件大小和允许提交表单的大小分别是通过 php.ini 中的 upload_max_filesize 、 post_max_size 设定的,默认大小分别是 2M 、 8M,如果上传的附件的大小和表单的大小超过了这两个参数设置的大小,就会出现上传附件不成功的情况。
解决办法:适当改大 upload_max_filesize 这个参数的值 (如果上传的附件超过 6M,建议使用 ftp 或者其他方式上传),然后重新启动一下 web 服务器软件。
7 、空间商限制了目录属性
有些空间限制了目录属性,导致在附件目录下建立子目录时失败
8 、 Apache 配置文件中设置了 open_basedir
如果您的 web 服务器是 Apache 的话,可以在的配置文件里指定 open_basedir 参数来限制 Apache 能够访问的目录,如果指定了这个参数,可能导致上传附件不成功。
解决办法:将系统的临时目录或者 php.ini 中 upload_tmp_dir 参数设置的目录、附件目录添加到 open_basedir 设置中或者将这个参数注释掉 (慎用),然后重新启动 Apache 。
这是常见的集中情况,希望能对大家有所帮助。