[英]Move_uploaded_file() permission
我正在研究一個簡單的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.";
}
}
?>
您正在運行Windows。 下載任何FTP客戶端並連接到服務器,然后將文件權限更改為777(rwe)。
我想我知道答案,但是讓我先解釋一下這里到底發生了什么。
瀏覽器通過包含文件的文章發送多部分/表單數據。 Apache收到所述文件,然后PHP將其放在臨時目錄中。 在文件系統上將其創建為新文件的位置。 通過PHP獲得的是: $ _FILES變量中的規范化檢查文件,在通過move_uploaded_file函數復制之前,它經過了一些進一步的測試。
您最有可能遇到的問題是:PHP / Apache使用的用戶以及在編寫文件時設置的權限不允許您當前登錄的用戶打開它。
2可能的解決方案:
更改Apache / PHP用戶以寫入具有權限的文件,以便您有權打開它。
或在以后更改文件的權限,假設用於創建文件的用戶具有足夠的權限:
無需手動授予權限,您可以在上傳文件后立即使用chmod()
函數在php
中授予權限,您可以在上傳文件后立即使用file_path/file_name
調用此函數,然后可以授予權限,將0777
用於所有讀取/正確權限
chmod(IMAGES_DIR.'/'.'image_name.'.$image_file_type, 0777);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.