2012-03-29 93 views
0

由于几天后我的Plesk服务器将不再与PHP文件上传协作,原因不明。PHP上传全部失败

测试是用1.8 MB的mp3文件和更小的电影文件完成的。

我试图通过这个问题来调试我的方式..

的upload_max_filesize = 100M

的post_max_size = 128M

open_basedir的是关闭或设置为两个目录,其中之一是的/ tmp/

upload_tmp_dir =/TMP memory_limit的= 4096M(由于其他原因,这是额外的高设置)

/tmp目录就这样产生了:

drwxrwxrwx 4 root root 200 Mar 29 14:09 tmp 

Linux版本的2.6.32-5-AMD64(Debian的2.6.32-35)([email protected])(gcc版本4.3.5(Debian的4.3.5- 4))#1 SMP周二6月14日09:42:28 UTC 2011

我的表单使用多部分/表单数据,所以这是解决,虽然我还测试了两个不同的ajax上传脚本 - 这两个通常工作正好。

我不会收到任何错误消息。我所知道的是上传后tmp文件不存在。就是这样。

有人知道这里发生了什么吗?

谢谢!

+0

服务器上剩余多少磁盘空间?/tmp可能随时被清除。 – devsnd 2012-03-29 12:15:19

+0

主磁盘使用率为29%。但是,我发现:Filesystem“overflow”挂载在/ tmp(这是什么意思?) – SquareCat 2012-03-29 12:17:03

回答

1

正如您的宝贵意见表示你有overflow安装在顶部/tmp。这种行为实际上表明,/ tmp已满,因为如果/ tmp已满,脚本/etc/init.d/mountoverflowtmp将自动创建大小为1mb的RAM磁盘。所以,我建议umount overflow,然后清理你的/tmp

1

我在代码的某处访问$ _FILE数组以获取上传的文件。

试试这个:

print_r($_FILES); 

如果问题是PHP相关的,你会看到 “错误代码” 中设置。

这里是一个错误代码解释: http://php.net/manual/en/features.file-upload.errors.php

这可以帮助您确定问题

+0

谢谢,它是错误号7 - UPLOAD_ERR_CANT_WRITE – SquareCat 2012-03-29 12:24:30

0

“我所知道的是,tmp文件不存在上载后,而且 就是这样。”

您的意思是说,在运行脚本之后您正在手动查找它?如果是这样,那是预期的行为。该文件暂时存储在$ _FILES ['postVariableName'] ['tmp_name']中,并且将在脚本的末尾被删除,除非您先做文件。

$localFilePath='/some/file/path.txt'; 
if(move_uploaded_file($_FILES['postVariableName']['tmp_name'], $localFilePath)){ 
    //Successfully moved the file 
} 
else{ 
    //Unable to move file 
    echo'Could not move file'; 
}