PHP图像上载权限问题

时间:2016-12-04 14:55:04

标签: php

我一直在寻找答案,发现了很多文章,但没有一篇文章有​​所帮助。所以我在这里要求大家的帮助。

我正在使用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.'"/>';

?>

1 个答案:

答案 0 :(得分:1)

正如您所说,这是一个Windows服务器,因此您需要通过GoDaddy权限面板设置权限。您需要为uploads目录设置读/写权限。
重要事项:通过FTP设置777不会在Windows服务器上剪切它。

除了根目录之外,您还可以为Windows®主机帐户中的每个目录设置不同的目录权限。这使您可以控制谁可以访问您的文件以及他们可以对这些目录中的文件执行哪些操作。

  1. 登录您的GoDaddy帐户。
  2. 点击虚拟主机
  3. 在您要使用的托管帐户旁边,点击管理
  4. 工具部分中,点击 FTP文件管理器
  5. 选择您要为其设置权限的目录。
  6. 点击 的 隐私
  7. 选择要使用的权限:
  8. 点击确定
    • Web可见 - 用户可以看到目录内容。
    • Web可写 - 应用程序可以写入此目录。
    • 继承 - 从父目录继承权限。如果要基于每个目录选择权限,则必须取消选择此选项。
    • 将所有子文件夹设置为继承权限 - 更改所有子文件夹以继承此文件夹的权限。
  9. https://uk.godaddy.com/help/set-directory-permissions-windows-6481