2011-12-28 70 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