我遇到了jQuery uploadify脚本的问题,但我找不到任何解决方案。 我已经将这个脚本集成到我的项目中,并且在Windows服务器(localhost)上一切正常,但是当我尝试在UNIX服务器上运行它时,I / O错误就会增加。 这只发生在我尝试上传上传文件夹中已存在的文件时。在Windows上,文件被覆盖,但是我得到了UNIX和I / O错误。
如果您有任何解决方案,我将非常感激。
这是我认为是问题的服务器端代码(PHP代码):
if (!empty($_FILES)) {
$tempFile = $_FILES['Filedata']['tmp_name'];
$targetPath = $_SERVER['DOCUMENT_ROOT'].$_REQUEST['folder'].'/';
$targetFile = str_replace('//', '/', $targetPath).$_FILES['Filedata']['name'];
if (file_exists($targetFile)) unlink($targetFile);
copy($tempFile, $targetFile);
echo "1";
}
答案 0 :(得分:0)
首先要检查几件事:
我问这些问题的原因是因为它可能是一个简单的权限问题。运行目标文件的unlink
和文件创建的用户将需要对目录的写访问权。运行脚本的用户可能不拥有该目录或文件的用户,在这种情况下,您可能需要稍微打开一些权限。
当然,这只是我的猜想,但这是我要找的第一件事。
答案 1 :(得分:0)
首先,您应该使用move_uploaded_file而不是副本。
但最有可能的问题是由于权限问题。你可以将任何文件上传到该文件夹吗?您是否检查过文件夹中已有的文件(您要覆盖的文件)与新上传的文件具有相同的权限?我的猜测是你使用(S)FTP将文件复制到文件夹,并且他们拥有不同的所有者/权限,因此你无法覆盖它们。
答案 2 :(得分:0)
除了paxdiablo和wimvds提到的可能的权限问题之外,还要检查文件名和文件的大小写。路径。与windows不同,unix文件系统区分大小写。