【问题标题】:fopen Creates File, But how to change permissions?fopen 创建文件,但是如何更改权限?
【发布时间】:2012-01-29 10:52:56
【问题描述】:

我正在使用 fopen 创建一个新文件。

$filename = 'user_data/10.xml';
$openhandle = fopen($filename, 'w+');

然后我检查文件是否已使用:file_exists() 函数创建。

问题是:文件是由某个所有者创建的,可能是文件夹名称,但不是我。文件的权限也只有readable by the owner。 而且由于我不是所有者,我无法读取文件,也无法更改权限。

但如果尝试使用以下方法更改它:

chown($filename, 'myusername');
chmod($filename, 777);

我尝试使用sudo 使用终端更改文件所有者和权限。那工作正常。 所以我也尝试将上面的函数与shell_exec()一起使用,让它在root中运行。

但是没有运气。

虽然我对文件权限编号没有太多经验,但 chown 命令也不起作用。

那么我应该如何更改文件的所有者和权限,以便我是所有者并且它可以被我的其他 PHP 脚本读写?

【问题讨论】:

  • 文件上传时(在任何chmod之前),文件的权限是什么,user_data文件夹的权限是什么,分配的所有者是谁?
  • 我创建了一个新的空文件,然后使用 fwrite() 写入它。该文件的权限为: Owner and Group: www-data Owner: read Group: execute Others: execute 在 user_data 文件夹上,我是所有者,三个人都设置为 Read, Write, Execute...
  • 正如 TimWickstrong 所说,您应该在 chmod 命令中添加一个前导 0,但也会出现您可能没有 chmod 权限的情况。试试 $chmoded = chmod($filename,0777); if (!$chmoded){echo "Could not change the file permissions";}... 另外,如果文件权限为 777,则无需 chown。

标签: php file-permissions fopen chmod chown


【解决方案1】:

您应该能够仅使用以下行对其进行 chmod:

chmod($filename, 0777);

注意 777 之前的 0。

在 chmod'ed 之前不要更改所有权

【讨论】:

  • 没问题!很高兴我能帮上忙!
猜你喜欢
  • 2013-02-19
  • 2013-10-30
  • 2013-03-08
  • 2021-01-17
  • 2016-02-29
  • 2016-04-20
  • 1970-01-01
  • 2012-12-11
相关资源
最近更新 更多