2011-12-28 383 views
9

我正在使用fopen创建一个新文件。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(),所以它在根目录下运行。

但没有运气。

虽然我没有太多关于文件权限编号的经验,但chown命令也无法正常工作。

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

+0

上传文件(在任何chmod之前)时,文件上的权限是什么,user_data文件夹上的权限是什么以及谁是分配的所有者? – 2011-12-28 20:18:17

+0

我创建一个新的空文件,然后使用fwrite()写入它。该文件的权限是: 所有者和组:WWW的数据 业主:读 组:执行 其他:执行 在USER_DATA文件夹,我的主人,所有的三个人都设置为读,写,Execute ... – 2011-12-28 20:23:59

+0

正如TimWickstrong所说的,您应该向chmod命令添加一个前导0,但也会出现您可能没有chmod权限的情况。试试$ chmoded = chmod($ filename,0777);如果(!$ chmoded){echo“无法更改文件权限”;} ...另外,如果文件权限是777,则不需要chown。 – 2011-12-28 20:26:30

回答

17

你应该能够只使用下面的行和chmod它:

chmod($filename, 0777); 

注意前777

而且0不改变所有权已经chmod'ed

+0

更多信息可以在这里找到:http://php.net/manual/en/function.chmod.php – 2011-12-28 20:23:58

+0

好的,这工作完美... 非常感谢... D – 2011-12-28 20:25:12

+1

没问题!很高兴我能帮上忙! – 2011-12-28 20:32:33