如何从php中写文件 - 权限被拒绝

时间:2017-04-01 15:01:10

标签: php permissions

很抱歉提出一个基本问题,但我找不到答案。我试图从PHP中写入一个文件,但它失败了Permission denied,我不知道为什么。 我的代码是

<!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!

我的用户(mick)显然拥有我要写入的目录,而www-data是“mick&#39;”的成员。组。我还将目录设置为777以尝试使其工作,但仍然得到错误。我在这里错过了什么?

1 个答案:

答案 0 :(得分:1)

您需要获得 www-data 用户的权限。您可以通过运行以下命令来执行此操作:

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

上述代码为用户 www-data 提供了对目录的完全访问权限。

或添加w +内部fopen。如果不存在,它将创建文件。