首頁  >  文章  >  後端開發  >  詳解PHP修改檔案權限函數chmod

詳解PHP修改檔案權限函數chmod

*文
*文原創
2018-01-05 18:02:525773瀏覽

chmod() 函數改變檔案模式。 chmod — Changes file mode 若成功則傳回 TRUE,否則回傳 FALSE。

語法
chmod(file,mode)參數 描述
file 必要。規定要檢查的文件。
mode 可選。規定新的權限。
mode 參數由4 個數字組成:
第一個數字永遠是0
第二個數字規定所有者的權限
第二個數字規定所有者所屬的使用者群組的權限
第四個數字規定其他所有人的權限
可能的值(如需設定多個權限,請對下面的數字進行總計):
1 - 執行權限
2 - 寫入權限
4 - 讀取權限
來看個簡單的實例 

<?php 
chmod("/somedir/somefile", 755); // 十进制数,可能不对 
chmod("/somedir/somefile", "u+rwx,go+rx"); // 字符串,不对 
chmod("/somedir/somefile", 0755); // 八进制数,正确的 mode 值 
?>

改進遞歸檔案模式@ infosoft ....,這是一個小短,應處理的Linux檔案系統的所有檔案類型。這個可以批次更改檔案或目錄的權限 

<?php 
function chmodr($path, $filemode) { 
if (!is_dir($path)) 
return chmod($path, $filemode); 
$dh = opendir($path); 
while (($file = readdir($dh)) !== false) { 
if($file != &#39;.&#39; && $file != &#39;..&#39;) { 
$fullpath = $path.&#39;/&#39;.$file; 
if(is_link($fullpath)) 
return FALSE; 
elseif(!is_dir($fullpath) && !chmod($fullpath, $filemode)) 
return FALSE; 
elseif(!chmodr($fullpath, $filemode)) 
return FALSE; 
} 
} 
closedir($dh); 
if(chmod($path, $filemode)) 
return TRUE; 
else 
return FALSE; 
} 
?>

如果你目錄太多的話可以用 

<?php 
$iterator = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($pathname), RecursiveIteratorIterator::SELF_FIRST); 
foreach($iterator as $item) { 
chmod($item, $filemode); 
} 
?>

這段程式碼來修改目錄的權限
哈哈,我們不只是講chmod簡單語法,而且還做了複雜的關於chmod使用實例
說明
bool chmod ( string $filename , int $mode )
嘗試將filename 所指定文件的模式改成mode 所給定的。
注意 mode 不會被自動當成八進制數值,也不能用字串(例如 "g+w")。若要確保正確操作,需要在 mode 前面加上 0:
mode 參數包含三個八進位數依序分別指定了擁有者、擁有者所在的群組以及所有人的存取限制。每一部分都可以透過加入所需的權限來計算出所要的權限。數字 1 表示使文件可執行,數字 2 表示使文件可寫,數字 4 表示使文件可讀。加入這些數字來制定所需的權限。有關 UNIX 系統的檔案權限可以閱讀手冊“man 1 chmod”和“man 2 chmod”。 

<?php 
// Read and write for owner, nothing for everybody else 
chmod("/somedir/somefile", 0600); 
// Read and write for owner, read for everybody else 
chmod("/somedir/somefile", 0644); 
// Everything for owner, read and execute for others 
chmod("/somedir/somefile", 0755); 
// Everything for owner, read and execute for owner&#39;s group 
chmod("/somedir/somefile", 0750); 
?>

如果成功則回傳 TRUE,失敗則回傳 FALSE。
Note: 目前使用者指的是執行 PHP 的使用者。很可能和通常的 shell 或 FTP 使用者不是同一個。在大多數系統下檔案模式只能被檔案擁有者的使用者改變。
Note: 本函數無法作用於遠端文件,被檢查的文件必須透過伺服器的文件系統存取。
Note: 當安全模式開啟的時候,PHP 會檢查所操作的檔案是否和正在執行的腳本具有相同的 UID (擁有者)。要注意的是,不能修改 SUID,SGID 和 sticky bits。

以上是詳解PHP修改檔案權限函數chmod的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn