创建新文件时权限被拒绝

创建新文件时权限被拒绝

当我使用 ubuntu 12.04 时,我可以使用 php fopen(..) 创建文件。但现在我无法使用 php 创建文件,因为我通过了 ubuntu 14.04。我可以打开现有文件进行读取或写入。但由于权限被拒绝,我无法创建新文件。

fopen(../../../../../Desktop/file): failed to open stream: Permission denied in /var/www/html/createFolder.php on line 17
Cannot open file: ../../../../..//Desktop/file" error is occured.


$my_file = ".." . DIRECTORY_SEPARATOR . ".." . DIRECTORY_SEPARATOR . ".." . DIRECTORY_SEPARATOR . ".." . DIRECTORY_SEPARATOR . ".." . DIRECTORY_SEPARATOR . "home" . DIRECTORY_SEPARATOR . "username" . DIRECTORY_SEPARATOR . "Desktop" . DIRECTORY_SEPARATOR . "file";
$handle = fopen($my_file, 'w') or die('Cannot open file:  '.$my_file);
$data = 'New data line 1';
fwrite($handle, $data);
$new_data = "\n".'New data line 2';
fwrite($handle, $new_data);

答案1

该错误是由于权限问题而发生的。

您希望在用户桌面目录中创建一个文件。

您的脚本未被运行你的用户它由 apahce 的用户运行,通常是www-data。此用户很可能没有权限在您的用户主目录中创建文件。

因此,您需要允许 apache 用户对您的桌面目录具有写访问权限。

笔记:这是一个坏主意但你还可以用其他几种方法来实现。

1.将 apache 用户添加到您的用户组。

2. 更改桌面目录的权限以允许任何人对其进行写入(可能是最糟糕的想法)。

3.将您自己添加到www-data群组,并将桌面文件夹的组所有者更改为www-data

使用任何这些技术时都要小心,因为它们会将您的主目录开放给其他人。

无关:为什么要用这么多..?只需使用绝对路径即可。

答案2

您需要有权限才能在 中创建该文件../../../../../Desktop

因为 php 代码是以 apache 用户权限执行的。

如果您想要它,您必须使用以下命令进行检查和更改。

ls -l ../../../../../Desktop

sudo chmod 777 ../../../../../Desktop

或者

sudo chown xxx ../../../../../Desktop

xxx是 apache 用户名。

相关内容