我正在制作一个允许我上传图片的简单php脚本。文件上传正确,但是当我打开目录中上传的图片时,您将无权查看此文件,请检查授权并重试"
<!DOCTYPE html>
<html>
<head>
<title> File upload </title>
<meta charset = "UTF-8" />
</head>
<body>
<form action="upload.php" method="post" enctype="multipart/form-data">
Seleziona il file:
<input type="file" name="fileToUpload" id="fileToUpload">
<input type="submit" value="Upload Image" name="submit">
</form>
</body>
</html>
<?php
$target_dir = "C:\Users\test\Desktop\upload_succeeded\\";
$target_file = $target_dir . basename($_FILES["fileToUpload"]["name"]);
$uploadOk = 1;
$fileType = pathinfo($target_file,PATHINFO_EXTENSION);
// Controllo se il file esiste gia
if (file_exists($target_file))
{
echo "Spiacenti, il file esiste gia'.";
$uploadOk = 0;
}
// Abilitare solo alcuni formati di file
if($fileType != "jpg" && $fileType != "png" && $fileType != "jpeg" && $fileType != "gif" )
{
echo "Spiacenti, solo file JPG, JPEG, PNG & GIF sono abilitati.";
$uploadOk = 0;
}
// Controllo se $uploadOk e' settato a 0 da un errore
if ($uploadOk == 0)
{
echo "Spiacenti, il tuo file non e' stato caricato.";
// Se tutto e' ok prova a caricare il file
}
else
{
if(move_uploaded_file($_FILES["fileToUpload"]["tmp_name"], $target_file))
{
echo "Il file ". basename( $_FILES["fileToUpload"]["name"]). " e' stato correttamente caricato.";
}
else
{
echo "Spiacenti, c'e' stato un errore nel caricamento del file.";
}
}
?>
答案 0 :(得分:1)
您正在运行Windows。下载任何FTP客户端并连接到您的服务器,而不是将文件的权限更改为777(rwe)。
答案 1 :(得分:1)
我想我知道答案,但让我先解释一下这里到底发生了什么。
浏览器通过包含该文件的帖子发送multipart / form-data。 Apache接收所述文件,PHP然后将其放在临时目录中。将其创建为文件系统上的新文件。 你通过PHP获得的是什么; $ _FILES变量中的规范化已检查文件,该变量在被move_uploaded_file函数复制之前会经过一些进一步的测试。
最有可能的问题是:PHP / Apache使用的用户以及写入文件时设置的权限,不允许您当前登录的用户打开它。
2可能的解决方案:
更改Apache / PHP用户以使用权限编写文件,以便您有权打开它。
或者之后更改文件的权限,假设用户用于创建文件具有足够的权限:
答案 2 :(得分:0)
除了手动授予权限,您可以使用php
功能在chmod()
授予权限,因为您在上传文件后立即上传任何文件,您可以使用file_path/file_name
调用此函数,然后可以提供权限相应地使用0777
获取所有读/权限
chmod(IMAGES_DIR.'/'.'image_name.'.$image_file_type, 0777);