2016-04-21 98 views
1

我在lubuntu上運行Apache服務器,並試圖使用php編寫用戶可以下載的文本文件。我更改的權限爲這樣:php創建文件的權限

sudo chmod 775 /var/www -R 

但是,當我執行腳本我仍然得到一個錯誤:

警告:FOPEN(3):未能打開流:權限在 /VAR否認第217行的/www/myPage.php無法打開文件!

這裏是PHP代碼:

$filename = $liste[0][0]; 

    $fh = fopen($filename, "x+") or die("Could not open file!"); 

    fwrite($fh, "foo") or die("Could not write to file"); 

    fclose($fh); 

我是否需要更改其他權限?還是有另一種方法來做我想做的事情? 謝謝

+0

嘗試通過上右擊,以檢查該文件夾的permision。你會看到寫權限不存在/ –

+1

'ls -l/var/www/myPage.php'的結果是什麼?哪個用戶和組擁有該文件? – Aurel

+0

嘗試使用絕對路徑寫入文件。 [fopen-perm-denied](http://stackoverflow.com/questions/3882244/php-fopen-permission-denied) –

回答

3

寫入文件夾需要Apache用戶在該文件夾上寫入,讀取和執行特權。

  1. 因此,首先嚐試識別Apache用戶的名稱(通常是www-data)。

  2. 然後檢查用戶是否是所有者或您想要寫入文件的文件夾組中的組。

  3. 爲該用戶的該文件夾授予寫入,讀取和執行(7)權限。給予不需要在同一文件夾上寫入讀取和執行權限(5)的其他人。

  4. (推薦)爲www-data用戶的文件授予寫入和讀取(6)權限。其他人只需要讀取權限(4)。

如果www-data既不是所有者也不是文件組中的任何一個,那麼您應該更改它們中的任何一個。完成此操作後,如果使用除www以外的用戶(而非root用戶)(如「webeditor」)訪問服務器,並且該用戶既不是所有者也不是組中的用戶,則可能無法訪問Web文件夾。

我建議:

  1. 設置所有者和組到Apache用戶/組。

    chown -R www-data:www-data /var/www 
    
  2. 添加webeditor用戶(或任何用於連接到服務器上的SSH或FTP)到www數據組。

    usermod -a -G www-data webeditor 
    
  3. 爲文件夾賦予所有者寫入,讀取和執行權限。避免其他人的寫作權限。

    find /var/www -type d -exec chmod 755 {} \; 
    
  4. 文件不需要執行權限。只有閱讀和寫作對於www數據用戶是必要的,其餘的只需要閱讀權限,所以644就足夠用於我們的文件。

    find /var/www -type f -exec chmod 644 {} \;