文件上传没有移动到tmp文件夹


File upload not moving file to tmp folder

我有以下html表单:

<form enctype="multipart/form-data" method="post" action="image_upload_script.php?u=<?php echo $u; ?>">
<div id="dropzone">
    <div>Drop Files Here Or Click To Browse</div>
    <input name="upload" id="upload" class="button" type="file" />
</div>
<input type="submit" id="uplbtn" value="Upload"/>
</form>

,这是相关的PHP部分:

$fileName = $_FILES["upload"]["name"]; 
$u = $_GET['u'];
$fileTmpLoc = $_FILES["upload"]["tmp_name"];
$fileType = $_FILES["upload"]["type"]; 
$fileSize = $_FILES["upload"]["size"]; 
$fileErrorMsg = $_FILES["upload"]["error"]; 
$kaboom = explode(".", $fileName); 
$fileExt = end($kaboom); 
print_r($_FILES);
if (!$fileTmpLoc) { 
    echo "ERROR: Please browse for a file before clicking the upload button.";
    exit();
} else if($fileSize > 5242880) { 
    echo "ERROR: Your file was larger than 5 Megabytes in size.";
    unlink($fileTmpLoc); 
    exit();
} else if (!preg_match("/.(gif|jpg|png)$/i", $fileName) ) {
     echo "ERROR: Your image was not .gif, .jpg, or .png.";
     unlink($fileTmpLoc); 
     exit();
} else if ($fileErrorMsg == 1) { 
    echo "ERROR: An error occured while processing the file. Try again.";
    exit();
}
$moveResult = move_uploaded_file($fileTmpLoc, "/var/www/domain.com/public_html/static_domain/upload/Images/$fileName");
if ($moveResult != true) {
	$error = error_get_last();
    echo "ERROR: $error[message]";
    unlink($fileTmpLoc); 
    exit();
}

这将从php传递以下反馈:

Array ([upload] => Array ([name] => 1961年黑斑羚工厂照片3a.jpg[type] => image/jpeg [tmp_name] =>/tmp/phpSOhr6N [error] => 0 [size]=> 46396))错误:move_uploaded_file():无法移动'/tmp/phpSOhr6N'到'/var/www/domain.com/public_html/static_domain/upload/Images/1961黑斑羚工厂照片3a.jpg'

它只是不把它移动到tmp -我通过在php中注释掉unlink来测试这一点,看看它是否仍然会坐在那里,如果我检查,但没有这样的运气:(所有涉及的文件夹都有0777权限,www-data是每个文件夹的所有者,tmp在1777也是完全自由的。当表单文件和php文件位于我的https-static域中的同一文件夹中以及在没有https的子域中(目前)时,它也会显示这种行为。我哪里做错了?我忘了什么吗?非常感谢您的帮助。谢谢!

尝试更改

$moveResult = move_uploaded_file($fileTmpLoc, "/var/www/domain.com/public_html/static_domain/upload/Images/$fileName");

$moveResult = move_uploaded_file($fileTmpLoc, $fileName);

查看它是否移动到当前文件夹。如果它不在当前文件夹中,请尝试使用相对路径(假设image_upload_script.php位于public_html/static_domain中)

$moveResult = move_uploaded_file($fileTmpLoc, 'upload/Images/'.$fileName);

在move_uploaded_file行之前试试这个:

if (! is_writable("/var/www/domain.com/public_html/static_domain/upload/Images/")) {
  die('sorry the web server does not have permission to write to /var/www/domain.com/public_html/static_domain/upload/Images/');
}

您的代码应该如下所示:

$u                  = $_GET['u'];
$fileTmpLoc         = $_FILES["upload"]["tmp_name"];
$fileType           = $_FILES["upload"]["type"];
$fileSize           = $_FILES["upload"]["size"];
$fileErrorMsg       = $_FILES["upload"]["error"];
$kaboom             = explode(".", $fileName);
$fileExt            = end($kaboom);
$fileName           = uniqid() . ".$fileExt"; // $_FILES["upload"]["name"];
$strDestinationPath = "/var/www/domain.com/public_html/static_domain/upload/Images";
if (!$fileTmpLoc)
{
    echo "ERROR: Please browse for a file before clicking the upload button.";
    exit();
}
else if ($fileSize > 5242880)
{
    echo "ERROR: Your file was larger than 5 Megabytes in size.";
    unlink($fileTmpLoc);
    exit();
}
else if (!preg_match("/.(gif|jpg|png)$/i", $fileName))
{
    echo "ERROR: Your image was not .gif, .jpg, or .png.";
    exit();
}
else if ($fileErrorMsg == 1)
{
    echo "ERROR: An error occured while processing the file. Try again.";
    exit();
}
elseif (is_writable($strDestinationPath))
{
    $moveResult = move_uploaded_file($fileTmpLoc, "$strDestinationPath/$fileName");
    if ($moveResult != true)
    {
        $error = error_get_last();
        echo "ERROR: $error[message]";
        exit();
    }
}
else
{
    exit("Directory does not exist or it's not writable");
}