2016-12-04 73 views
0

我一直在寻找答案,发现了很多文章,但他们都没有帮助。所以我要求大家在这里帮忙。PHP Image上传权限问题

我使用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

检查'uploads'文件夹的权限。它必须有'写'权限 –

+0

我该怎么做? – Allosaurus

回答

1

是Windows服务器,因此您需要通过GoDaddy权限面板设置权限。您需要为上传目录设置读取/写入权限。
重要提示:通过FTP设置777不会在Windows服务器上切断它。

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

  1. 登录到您的GoDaddy帐户。
  2. 点击虚拟主机。请点击管理
  3. 工具部分,单击FTP文件管理器
  4. 选择您要为其设置权限的目录。
  5. 点击 隐私
  6. 选择要使用的权限:
  7. 点击OK
    • 网络可见 - 目录的内容是对用户可见。
    • Web可写 - 应用程序可以写入此目录。
    • 继承 - 从父目录继承权限。如果要针对每个目录选择权限,则必须取消选择此选项。
    • 集所有子文件夹继承权限 - 更改所有子文件夹从该文件夹继承权限。

https://uk.godaddy.com/help/set-directory-permissions-windows-6481

+0

问题是,我不知道该怎么做,没有一个名为Tools – Allosaurus

+0

的部分,我添加了一些更多信息,并且有一个有用的链接。 – MennyMT