我一直在寻找答案,发现了很多文章,但没有一篇文章有所帮助。所以我在这里要求大家的帮助。
我正在使用GoDaddy的Windows虚拟主机
这是我上传图片时遇到的错误:
PHP Warning: move_uploaded_file(../uploads/aczbyfeoghtmduikwxjrlnvqsp3.jpg): failed to open stream: Permission denied in G:\PleskVhosts\minebloxmc.net\httpdocs\web\upload.php on line 48
PHP Warning: move_uploaded_file(): Unable to move 'C:\Windows\Temp\php27A2.tmp' to '../uploads/aczbyfeoghtmduikwxjrlnvqsp3.jpg' in G:\PleskVhosts\minebloxmc.net\httpdocs\web\upload.php on line 48
这是我的代码:
<?php
session_start();
$target_dir = "../uploads/";
$str = 'abcdefghijklmnopqrstuvwxyz';
$shuffled = str_shuffle($str);
$target_file = $target_dir . $shuffled . basename($_FILES["fileToUpload"]["name"]);
$uploadOk = 1;
$imageFileType = pathinfo($target_file,PATHINFO_EXTENSION);
// Check if image file is a actual image or fake image
if(isset($_POST["submit"])) {
$check = getimagesize($_FILES["fileToUpload"]["tmp_name"]);
if($check !== false) {
echo "File is an image - " . $check["mime"] . ".";
$uploadOk = 1;
} else {
echo "File is not an image.";
$uploadOk = 0;
}
}
if (file_exists($target_file)) {
echo "Sorry, file already exists.";
$uploadOk = 0;
}
if ($_FILES["fileToUpload"]["size"] > 500000) {
echo "Sorry, your file is too large.";
$uploadOk = 0;
}
if($imageFileType != "jpg" && $imageFileType != "png" && $imageFileType != "jpeg"
&& $imageFileType != "gif" && $imageFileType != "JPG" && $imageFileType != "PNG" && $imageFileType != "JPEG"
&& $imageFileType != "GIF" ) {
echo "Sorry, only JPG, JPEG, PNG & GIF files are allowed.";
$uploadOk = 0;
}
if ($uploadOk == 0) {
echo "Sorry, your file was not uploaded.";
} else {
if (move_uploaded_file($_FILES["fileToUpload"]["tmp_name"], $target_file)) {
echo "The file ". basename( $_FILES["fileToUpload"]["name"]). " has been uploaded.";
echo '<br>';
$con = mysqli_connect('127.0.0.1','root','sutdenlol1');
if(!$con){
echo 'Not Connected to Server';
}
if(!mysqli_select_db($con,'mineblox')){
echo 'Not Selecting Database';
}
$sql = "UPDATE users
SET Profilepic='$target_file' WHERE ID = ". $_SESSION['id'] ." ";
if(!mysqli_query($con,$sql)) {
echo 'Not Inserted';
} else {
echo 'Inserted';
}
} else {
echo "Sorry, there was an error uploading your file.";
}
}
echo '<br>';
echo '<img src="../uploads'.$target_file.'"/>';
?>
答案 0 :(得分:1)
正如您所说,这是一个Windows服务器,因此您需要通过GoDaddy权限面板设置权限。您需要为uploads目录设置读/写权限。
重要事项:通过FTP设置777不会在Windows服务器上剪切它。
除了根目录之外,您还可以为Windows®主机帐户中的每个目录设置不同的目录权限。这使您可以控制谁可以访问您的文件以及他们可以对这些目录中的文件执行哪些操作。
https://uk.godaddy.com/help/set-directory-permissions-windows-6481