fopen 创建文件,但是如何更改权限?
Posted
技术标签:
【中文标题】fopen 创建文件,但是如何更改权限?【英文标题】:fopen Creates File, But how to change permissions? 【发布时间】: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。 【参考方案1】:您应该能够仅使用以下行对其进行 chmod:
chmod($filename, 0777);
注意 777 之前的 0。
在 chmod'ed 之前不要更改所有权
【讨论】:
没问题!很高兴我能帮上忙!以上是关于fopen 创建文件,但是如何更改权限?的主要内容,如果未能解决你的问题,请参考以下文章
如何更改 PHP Monologger 创建的日志文件的默认文件权限?
function.fopen:无法打开流:PHP 中的权限被拒绝