我有以下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的以下反馈:
数组([上传] =>数组([名称] => 1961 Impala工厂照片3a.jpg [类型] =>图片/ jpeg [tmp_name] => / tmp / phpSOhr6N [错误] => 0 [大小] => 46396 ))错误:move_uploaded_file():无法将'/ tmp / phpSOhr6N'移动到'/var/www/domain.com/public_html/static_domain/upload/Images/1961 Impala工厂照片3a.jpg'
它只是不会将其移动到tmp-我通过注释掉php中的取消链接来测试它,以查看如果我检查它是否仍然可以坐在那里,但是没有运气:(所有涉及的文件夹都有0777权限,而www-数据是其中每个数据的所有者,并且tmp在1777年也是完全免费的。当表单文件和php文件位于我的https静态域以及子域的同一文件夹中时,它也会显示此行为。如果没有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/');
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句