很抱歉提出一个基本问题,但我找不到答案。我试图从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以尝试使其工作,但仍然得到错误。我在这里错过了什么?
答案 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。如果不存在,它将创建文件。