PHP chmod 函數(shù)與批量修改文件目錄權(quán)限
更新時(shí)間:2010年05月10日 03:08:20 作者:
chmod() 函數(shù)改變文件模式。chmod — Changes file mode 如果成功則返回 TRUE,否則返回 FALSE。
語(yǔ)法
chmod(file,mode)參數(shù) 描述
file 必需。規(guī)定要檢查的文件。
mode 可選。規(guī)定新的權(quán)限。
mode 參數(shù)由 4 個(gè)數(shù)字組成:
第一個(gè)數(shù)字永遠(yuǎn)是 0
第二個(gè)數(shù)字規(guī)定所有者的權(quán)限
第二個(gè)數(shù)字規(guī)定所有者所屬的用戶組的權(quán)限
第四個(gè)數(shù)字規(guī)定其他所有人的權(quán)限
可能的值(如需設(shè)置多個(gè)權(quán)限,請(qǐng)對(duì)下面的數(shù)字進(jìn)行總計(jì)):
1 - 執(zhí)行權(quán)限
2 - 寫(xiě)權(quán)限
4 - 讀權(quán)限
來(lái)看個(gè)簡(jiǎn)單的實(shí)例
<?php
chmod("/somedir/somefile", 755); // 十進(jìn)制數(shù),可能不對(duì)
chmod("/somedir/somefile", "u+rwx,go+rx"); // 字符串,不對(duì)
chmod("/somedir/somefile", 0755); // 八進(jìn)制數(shù),正確的 mode 值
?>
改進(jìn)遞歸文件模式@ infosoft ....,這是一個(gè)小短,應(yīng)處理的Linux文件系統(tǒng)的所有文件類(lèi)型。這個(gè)可以批量更改文件或目錄的權(quán)限
<?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);
}
?>
這段代碼來(lái)修改目錄的權(quán)限
哈哈,我們不只是講chmod簡(jiǎn)單語(yǔ)法,而且還做了復(fù)雜的關(guān)于chmod使用實(shí)例
說(shuō)明
bool chmod ( string $filename , int $mode )
嘗試將 filename 所指定文件的模式改成 mode 所給定的。
注意 mode 不會(huì)被自動(dòng)當(dāng)成八進(jìn)制數(shù)值,而且也不能用字符串(例如 "g+w")。要確保正確操作,需要給 mode 前面加上 0:
mode 參數(shù)包含三個(gè)八進(jìn)制數(shù)按順序分別指定了所有者、所有者所在的組以及所有人的訪問(wèn)限制。每一部分都可以通過(guò)加入所需的權(quán)限來(lái)計(jì)算出所要的權(quán)限。數(shù)字 1 表示使文件可執(zhí)行,數(shù)字 2 表示使文件可寫(xiě),數(shù)字 4 表示使文件可讀。加入這些數(shù)字來(lái)制定所需要的權(quán)限。有關(guān) UNIX 系統(tǒng)的文件權(quán)限可以閱讀手冊(cè)“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: 當(dāng)前用戶指的是執(zhí)行 PHP 的用戶。很可能和通常的 shell 或者 FTP 用戶不是同一個(gè)。在大多數(shù)系統(tǒng)下文件模式只能被文件所有者的用戶改變。
Note: 本函數(shù)不能作用于遠(yuǎn)程文件,被檢查的文件必須通過(guò)服務(wù)器的文件系統(tǒng)訪問(wèn)。
Note: 當(dāng)安全模式打開(kāi)的時(shí)候,PHP 會(huì)檢查所操作的文件是否和正在執(zhí)行的腳本具有相同的 UID (所有者)。要注意的是,不能修改 SUID,SGID 和 sticky bits。
chmod(file,mode)參數(shù) 描述
file 必需。規(guī)定要檢查的文件。
mode 可選。規(guī)定新的權(quán)限。
mode 參數(shù)由 4 個(gè)數(shù)字組成:
第一個(gè)數(shù)字永遠(yuǎn)是 0
第二個(gè)數(shù)字規(guī)定所有者的權(quán)限
第二個(gè)數(shù)字規(guī)定所有者所屬的用戶組的權(quán)限
第四個(gè)數(shù)字規(guī)定其他所有人的權(quán)限
可能的值(如需設(shè)置多個(gè)權(quán)限,請(qǐng)對(duì)下面的數(shù)字進(jìn)行總計(jì)):
1 - 執(zhí)行權(quán)限
2 - 寫(xiě)權(quán)限
4 - 讀權(quán)限
來(lái)看個(gè)簡(jiǎn)單的實(shí)例
復(fù)制代碼 代碼如下:
<?php
chmod("/somedir/somefile", 755); // 十進(jìn)制數(shù),可能不對(duì)
chmod("/somedir/somefile", "u+rwx,go+rx"); // 字符串,不對(duì)
chmod("/somedir/somefile", 0755); // 八進(jìn)制數(shù),正確的 mode 值
?>
改進(jìn)遞歸文件模式@ infosoft ....,這是一個(gè)小短,應(yīng)處理的Linux文件系統(tǒng)的所有文件類(lèi)型。這個(gè)可以批量更改文件或目錄的權(quán)限
復(fù)制代碼 代碼如下:
<?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;
}
?>
如果你目錄太多的話可以用
復(fù)制代碼 代碼如下:
<?php
$iterator = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($pathname), RecursiveIteratorIterator::SELF_FIRST);
foreach($iterator as $item) {
chmod($item, $filemode);
}
?>
這段代碼來(lái)修改目錄的權(quán)限
哈哈,我們不只是講chmod簡(jiǎn)單語(yǔ)法,而且還做了復(fù)雜的關(guān)于chmod使用實(shí)例
說(shuō)明
bool chmod ( string $filename , int $mode )
嘗試將 filename 所指定文件的模式改成 mode 所給定的。
注意 mode 不會(huì)被自動(dòng)當(dāng)成八進(jìn)制數(shù)值,而且也不能用字符串(例如 "g+w")。要確保正確操作,需要給 mode 前面加上 0:
mode 參數(shù)包含三個(gè)八進(jìn)制數(shù)按順序分別指定了所有者、所有者所在的組以及所有人的訪問(wèn)限制。每一部分都可以通過(guò)加入所需的權(quán)限來(lái)計(jì)算出所要的權(quán)限。數(shù)字 1 表示使文件可執(zhí)行,數(shù)字 2 表示使文件可寫(xiě),數(shù)字 4 表示使文件可讀。加入這些數(shù)字來(lái)制定所需要的權(quán)限。有關(guān) UNIX 系統(tǒng)的文件權(quán)限可以閱讀手冊(cè)“man 1 chmod”和“man 2 chmod”。
復(fù)制代碼 代碼如下:
<?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: 當(dāng)前用戶指的是執(zhí)行 PHP 的用戶。很可能和通常的 shell 或者 FTP 用戶不是同一個(gè)。在大多數(shù)系統(tǒng)下文件模式只能被文件所有者的用戶改變。
Note: 本函數(shù)不能作用于遠(yuǎn)程文件,被檢查的文件必須通過(guò)服務(wù)器的文件系統(tǒng)訪問(wèn)。
Note: 當(dāng)安全模式打開(kāi)的時(shí)候,PHP 會(huì)檢查所操作的文件是否和正在執(zhí)行的腳本具有相同的 UID (所有者)。要注意的是,不能修改 SUID,SGID 和 sticky bits。
您可能感興趣的文章:
- PHP獲取文件絕對(duì)路徑的代碼(上一級(jí)目錄)
- php讀取目錄及子目錄下所有文件名的方法
- PHP中文件讀、寫(xiě)、刪的操作(PHP中對(duì)文件和目錄操作)
- php遍歷目錄與文件夾的多種方法詳解
- PHP判斷文件是否存在、是否可讀、目錄是否存在的代碼
- php中檢查文件或目錄是否存在的代碼小結(jié)
- PHP遍歷某個(gè)目錄下的所有文件和子文件夾的實(shí)現(xiàn)代碼
- PHP 創(chuàng)建文件(文件夾)以及目錄操作代碼
- 使用PHP遍歷文件夾與子目錄的函數(shù)代碼
- PHP讀取目錄下所有文件的代碼
- php 遍歷顯示文件夾下所有目錄、所有文件的函數(shù),沒(méi)有分頁(yè)的代碼
- php讀取出一個(gè)文件夾及其子文件夾下所有文件的方法示例
相關(guān)文章
php面向?qū)ο笕ヂ?(一) 面向?qū)ο蠡A(chǔ)知識(shí)
面向?qū)ο缶幊蹋∣bject Oriented Programming,OOP,面向?qū)ο蟪绦蛟O(shè)計(jì))是一種計(jì)算機(jī)編程架構(gòu)。2009-09-09