2017-04-01 50 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',并且我认为我应该可以写信给它。当时我还没有意识到它会写成万维网数据。它现在有效。谢谢你的帮助。 –