如何在php中写入文件 - 权限被拒绝
对不起,提出一个基本问题,但我找不到答案。我正在尝试从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以尝试使其工作,但仍然出现错误。我在这里错过了什么?
您需要为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。如果不存在,它将创建该文件。
是的,它是apache。我刚刚尝试过您的建议,但没有任何区别,仍然会出现相同的错误。 –
好吧,我想我现在有。我在某个时候创建了文本文件,并且拥有所有者'mick',并且我认为我应该可以写信给它。当时我还没有意识到它会写成万维网数据。它现在有效。谢谢你的帮助。 –
伙计们,运行'ls -la/home/mick/Documents/www/test'。 –
什么是当前文件路径和文本文件的路径是什么? – C2486
这会返回-rw-r -r-- 1 mick mick 374 Apr 1 15:33 fileTest.php –