首页 > 编程笔记 > PHP笔记 阅读:3

PHP目录操作常用函数大全(附带实例)

在 PHP 中,对目录进行操作就是对文件夹(操作系统的重要组成部分,用于管理文件的群组)进行操作,包括目录的打开、关闭、创建、读取和删除。

PHP打开目录

在 PHP 中,打开目录的函数为 opendir(),其语法如下:
opendir(string path)
其中,path 参数代表路径。该函数返回一个资源对象。

【实例 1】打开文件的目录,判断目录是否存在。
<?php
$dir = "/var/www/html/";
if(is_dir($dir)) //使用is_dir() 函数判断路径的有效性,其语法为bool is_dir(string path)
{$dir_res = opendir($dir);
    echo "目录存在";
}
else
    echo "目录不存在或者不是有效的目录";
?>
运行结果为:

目录存在

PHP关闭目录

在 PHP 中,关闭目录的函数为 closedir(),其语法如下:
void closedir(dir_resource)
其中,dir_resource 参数指使用 opendir() 函数返回的资源对象。

【实例 2】关闭文件目录。
<?php
closedir($dir_res);   //$dir_res是在【实例5-4 】中打开目录返回的资源对象
?>

PHP创建目录

在 PHP 中,创建目录的函数为 mkdir(),其语法如下:
bool mkdir(string pathname[,int mode[,bool recursive[,resource context]]])
其中,pathname 是必选参数,表示要创建的目录的地址,执行成功则返回 true,执行失败则返回 false。其他 3 个参数是可选参数,说明如下:
注意,如果程序是在 Windows 操作系统环境下运行,那么 mode 参数会被自动忽略。另外,recursive 参数和 context 参数都是在 PHP 5 之后增加的,不可用于早期的 PHP 4 环境。

【实例 3】创建指定的文件目录。在指定目录下创建了一个 PHP 文件夹。
<?php
// 指定要创建的目录路径
$dir = "new_directory";

// 创建目录,设置权限为 0755(可读可写可执行,但不允许其他人写入)
// 递归模式设置为 false,表示不创建多级目录
if (mkdir($dir, 0755, false)) {
    echo "目录创建成功!";
} else {
    echo "目录创建失败!";
}
?>
在这个示例中,我们尝试创建一个名为 new_directory 的目录,并设置权限为 0755。这意味着所有者(通常是运行 PHP 脚本的用户)将拥有读、写和执行权限,而组和其他用户将只有读和执行权限。

PHP读取目录

在 PHP 中,读取目录中文件的函数为 readdir(),其语法如下:
String readdir(resource dir_handle)
其中,dir_handle 参数指使用 opendir() 函数返回的资源对象。该函数按照文件系统的文件排序返回文件名。

【实例 4】读取指定的文件目录。
<?php
$dir = "/var/www/html/";
$dir_res = opendir($dir);
while($filen = readdir($dir_res ))
{
    echo $filen."<br />";
}
closedir($dir_res);
?>
运行结果为:

.
..
index.php
test.php

注意,“.”表示当前目录,“..”表示上一级目录。

【实例 5】列出当前目录的所有文件,并且过滤“.”“..”
<?php
$dir = "/var/www/html";
$dir_res = opendir($dir);
while($filen = readdir($dir_res ))
{
    if( $filen!= "." && $filen!= "..")
    echo $filen."<br>";
}
closedir($dir_res);
?>
运行结果为:

index.php
test.php


除了 readdir() 函数外,在 PHP 中还可以使用 scandir() 函数列出指定路径中的文件和目录。基本语法如下:
array scandir (string directory[,int sorting_order[,resource context]])
该函数包含 3 个参数,参数说明如下:
【实例 6】scandir() 函数的应用。
<?php
$dir ="/var/www/html";
$arr=scandir($dir) ;
foreach($arr as $value)
    echo $value."<br>";
?>
运行结果为:

.
..
conn.php
denglu.php
dl.css

PHP删除目录

在 PHP 中,删除目录的函数为 rmdir(),其语法如下:

bool rmdir(string pathname)

其中,pathname 参数表示要删除的目录地址。

【实例 7】删除指定目录。
<?php
$dir ="/var/www/html/php/";
if(is_dir($dir))
if(rmdir($dir))
    echo "删除成功";
else
    echo "删除失败";
?>
注意,在删除目录时,目录必须为空。

在创建目录或删除目录时,如果遇到权限问题,可以试试为目录赋权和关闭 SELinux 防火墙。

相关文章