簡體   English   中英

PHP move_uploaded_file權限被拒絕(權限設置為755)

[英]PHP move_uploaded_file permission denied (permission set to 755)

我正在嘗試使用簡單的HTML輸入表單上傳用戶的照片,但是出現以下錯誤。 我已經將上傳文件夾的權限設置為755。我嘗試使用777,但可以,但是我讀到不建議將其設置為777,並且應該可以使用755?

Warning: move_uploaded_file(uploads/2014_08_21_11_03_14k.jpg) [function.move-uploaded-file]: failed to open stream: Permission denied in /home/yadayada/register.php on line 136
Warning: move_uploaded_file() [function.move-uploaded-file]: Unable to move '/tmp/php8KQwyh' to 'uploads/2014_08_21_11_03_14k.jpg' in /home/yadayada/register.php on line 136

這是我的PHP代碼:

$userPhotoUrl = 'uploads/'.date('Y_m_d_H_i_s').$_FILES['photo']['name'];

if (is_uploaded_file($_FILES['photo']['tmp_name'])) {
    if (!move_uploaded_file($_FILES['photo']['tmp_name'], $userPhotoUrl)) {
        // show error message
        return;
    }
} else {
    // show error message
    return;
}

首先,您必須了解什么是755。

對於文件夾, 755表示drwxr-xr-x ,這意味着:

  • 所有者擁有讀取,寫入和執行權限
  • 組和公共僅具有讀取和執行權限

由於運行PHP的用戶可能不是該文件夾的所有者,因此它沒有對該文件夾的寫入權限。 或者:

  • 您將文件夾chown了PHP的用戶; 要么
  • 您將其777 :每個人都具有讀取,寫入和執行權限

當然,后一種選擇存在安全問題,就像有人將可執行的Shell腳本上載到您的文件夾一樣,他可以執行該腳本。 因此,您應該堅持第一選擇。

您可能應該將上傳文件夾(移動)與運行PHP的用戶鎖定在一起。 嘗試這個

chown -R nobody uploaddir
chmod -R 755 uploaddir

看一下這個權限

如果您設置755,則您的Web服務器將是該文件夾的所有者。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM