2017-04-01 48 views
0

對不起,提出一個基本問題,但我找不到答案。我正在嘗試從PHP中寫入文件,但是它失敗並且Permission被拒絕,我不知道爲什麼。 我的代碼是如何在php中寫入文件 - 權限被拒絕

<!DOCTYPE HTML> 
<html> 
<head> 
    <title>File test</title> 

<?php 
ini_set('display_errors', 'On'); 
error_reporting(E_ALL | E_STRICT); 

echo 'Current script owner: ' . get_current_user(); 
echo '<br>WhoAmI: '. shell_exec('whoami'); 
echo '<br>cwd: '.getcwd(); 
$plist = fopen("plist.txt", "w") or die("Unable to open file!"); 
fwrite($plist, 'some text'); 
fclose($plist); 
?> 

這是輸出我看到

Current script owner: mick 
WhoAmI: www-data 
cwd: /home/mick/Documents/www/test 
Warning: fopen(plist.txt): failed to open stream: Permission denied in /home/mick/Documents/www/test/fileTest.php on line 13 
Unable to open file! 

我的用戶(米克)顯然擁有我試圖寫入和WWW的數據是「米克的成員目錄'組。我也將目錄設置爲777以嘗試使其工作,但仍然出現錯誤。我在這裏錯過了什麼?

+0

夥計們,運行'ls -la/home/mick/Documents/www/test'。 –

+0

什麼是當前文件路徑和文本文件的路徑是什麼? – C2486

+0

這會返回-rw-r -r-- 1 mick mick 374 Apr 1 15:33 fileTest.php –

回答

0

您需要爲www-data用戶授予權限。您可以通過運行這些命令做到這一點:

sudo chown www-data:www-data /home/mick/Documents/www/test 
sudo chmod 777 /home/mick/Documents/www/test 

上面的代碼給出了用戶WWW的數據到目錄完全訪問權限。

或者加w + inner fopen。如果不存在,它將創建該文件。

+0

是的,它是apache。我剛剛嘗試過您的建議,但沒有任何區別,仍然會出現相同的錯誤。 –

+0

好吧,我想我現在有。我在某個時候創建​​了文本文件,並且擁有所有者'mick',並且我認爲我應該可以寫信給它。當時我還沒有意識到它會寫成萬維網數據。它現在有效。謝謝你的幫助。 –