2012-07-19 76 views
0

我試圖在PHP中實現照片上傳和調整大小(我正在使用LAMP堆棧和Imagick擴展來調整大小)。但是,每次我嘗試上傳文件時,該文件默認都將所有權設置爲www-data,這使得無法對文件應用任何更改。以下是我正在使用的代碼:php文件上傳所有權問題

<?php 

if (is_uploaded_file($_FILES['picture']['tmp_name'])){ 

    $photoPath = $_SERVER['DOCUMENT_ROOT'] . '/photo_app/uploads/' . $_FILES['picture']['name']; 

    if (move_uploaded_file($_FILES['picture']['tmp_name'], $photoPath)){ 

     $image = new Imagick($photoPath); 
     $image -> scaleImage(250, 250, true); 
     $image -> writeImage($photoPath); 

    } 

} 

?> 

照片在正確的位置移動,但由於所有權問題沒有重新調整大小。有沒有辦法解決這個問題?謝謝:)

+0

我懷疑這是一個所有權問題,因爲試圖操縱圖像的用戶'www-data'是上傳它的那個人。 – sberry 2012-07-19 01:07:24

+0

您是否確實收到錯誤信息,指出Web服務器無權訪問該文件? – 2012-07-19 01:30:42

+0

我實際上沒有收到任何訪問錯誤。我只是假設這是因爲該文件擁有不同的所有者和www數據,但訪問權限設置爲讀寫 – 2012-07-19 01:39:49

回答

1

上傳文件的用戶將是PHP正在運行的用戶。由於您正在從同一個php實例上傳和操作文件,因此您應該擁有完整的文件權限。

+0

我不認爲我擁有上傳文件的完整權限。當我右鍵單擊上傳的文件時,它將www-data作爲權限選項卡中的所有者,並將訪問權設置爲對www數據進行讀取和寫入。該組也是www數據,訪問權限設置爲只讀。在底部它說'你不是所有者,所以你不能改變這些權限'。 – 2012-07-19 01:32:38

+1

PHP通常配置爲在其自己的用戶下運行。當然,這與您用來點擊文件的用戶不同。不過,由於PHP正在創建該文件,因此它有權修改它。 – MrGlass 2012-07-19 02:05:54