【转】PHP目录函数及正确用法

http://hi.baidu.com/hylun/item/e4a76ecb28c249d697445257

readdir

读取目录 handle。

语法: string readdir(int dir_handle);

返回值: 字符串

函数种类: 文件存取

内容说明:本函数用来读取目录。返回目录中的文件名称,读取不照任何特殊的顺序。

使用范例:本例列出目前目录和子目录的所有文件及目录

<?php
function listdir($dir_name,$str){
$dir=opendir($dir_name);
    while ('' !=($file_name=readdir($dir))) {
         if(($file_name!='.') && ($file_name!='..')) {
   
            echo "$str$file_name"."<br>";
            if (is_dir($dir_name."/".$file_name)){
               listdir($dir_name."/".$file_name,"|&nbsp;&nbsp;".$str); //递归调用列出子目录的文件及目录         
            }            
      }
    }
    closedir($dir);
    echo $file_list;
}
echo __FILE__."<br>"; //当前文件路径
echo dirname(__FILE__)."<br>";//当前目录路径
listdir('.','|_');

//一些错误的方法,当存在名称为0的目录或文件,将不能遍历整个文件夹
$handle=opendir('.');
while ($file = readdir($handle)) {
    echo "$file\n";
}
closedir($handle);
//下面的同样错误,需要用!==不恒等才行
$handle=opendir('.');
while (false!=($file = readdir($handle))) {
    echo "$file\n";
}
closedir($handle);
?>

mkdir

创建目录。

语法: bool mkdir( string pathname [, int mode [, bool recursive [, resource context]]] );

返回值: bool

内容说明:本函数用来创建指定权限的目录。

使用范例:本例创建类似于conf/aaa/bbb/ccc路径的多级目录

<?php
function creatdir($dir){
$d=strtok($dir,"/");
    while($d!=''){
$c.=$d."/";
if(!is_dir($c)) try{mkdir($c,0777);}catch(Exception $e){};
$d=strtok("/");
}
}
$url="conf/aaa/bbb/ccc";
creatdir($url);

//创建目录时,mkdir不会自动创建上层目录
mkdir("/path/to/my/dir", 0700);
?>

chmodchmod -- 改变文件模式说明bool chmod ( string filename, int mode )

尝试将 filename 所指定文件的模式改成 mode 所给定的。

注意 mode 不会被自动当成八进制数值,而且也不能用字符串(例如 "g+w")。要确保正确操作,需要给 mode 前面加上 0:

 

 

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

 

 

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

注: 当前用户指的是执行 PHP 的用户。很可能和通常的 shell 或者 FTP 用户不是同一个。在大多数系统下文件模式只能被文件所有者的用户改变。

注: 本函数不能作用于远程文件,被检查的文件必须通过服务器的文件系统访问。

注: 安全模式打开的时候,PHP 会检查所操作的文件是否和正在执行的脚本具有相同的 UID (所有者)。要注意的是,不能修改 SUID,SGID 和 sticky bits。

rename

 

rename -- 重命名或移动一个文件或目录说明bool rename ( string oldname, string newname [, resource context] )

尝试把 oldname 重命名为 newname

如果成功则返回 TRUE,失败则返回 FALSE

例子 1. rename() 例子

<?php
rename("/tmp/tmp_file.txt", "/home/user/login/docs/my_file.txt");
?>

注: 在 PHP 4.3.3 之前,rename() 不能在基于 *nix 的系统中跨磁盘分区重命名文件。

注: 自 PHP 5.0.0 起 rename() 也可用于某些 URL 封装协议。参见附录 L 的列表看看 rename() 支持哪些 URL 封装协议。

 

execexec -- Execute an external program说明string exec ( string command [, array &output [, int &return_var]] )

exec() executes the given command.

参数

 

 

command

The command that will be executed.

output

If the output argument is present, then the specified array will be filled with every line of output from the command. Trailing whitespace, such as \n, is not included in this array. Note that if the array already contains some elements, exec() will append to the end of the array. If you do not want the function to append elements, call unset() on the array before passing it to exec().

return_var

If the return_var argument is present along with the output argument, then the return status of the executed command will be written to this variable.

 

返回值

The last line from the result of the command. If you need to execute a command and have all the data from the command passed directly back without any interference, use the passthru() function.

To get the output of the executed command, be sure to set and use the output parameter.

范例

例子 1. An exec() example

<?php
// outputs the username that owns the running php/httpd process
// (on a system with the "whoami" executable in the path)
echo exec('whoami');
?>

posted @ 2013-07-17 10:45  金鱼儿  阅读(144)  评论(0编辑  收藏  举报