程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> 關於PHP編程 >> PHP chmod 函數與批量修改文件目錄權限

PHP chmod 函數與批量修改文件目錄權限

編輯:關於PHP編程

語法
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 != '.' && $file != '..') {
$fullpath = $path.'/'.$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's group
chmod("/somedir/somefile", 0750);
?>

如果成功則返回 TRUE,失敗則返回 FALSE。

Note: 當前用戶指的是執行 PHP 的用戶。很可能和通常的 shell 或者 FTP 用戶不是同一個。在大多數系統下文件模式只能被文件所有者的用戶改變。


Note: 本函數不能作用於遠程文件,被檢查的文件必須通過服務器的文件系統訪問。

Note: 當安全模式打開的時候,PHP 會檢查所操作的文件是否和正在執行的腳本具有相同的 UID (所有者)。要注意的是,不能修改 SUID,SGID 和 sticky bits。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved