介绍
FileSystem类没有使用类的方式来进行构造,只是定义了两个简化文件系统操作的函数。
所属文件:FLEA/FLEA/Helper/FileSystem.php。
==============================================================
mkdirs()
函数原型:
/**
* 创建一个目录树
*
*/
function mkdirs($dir, $mode = 0777)
参数说明:
$dir:路径参数,使用的是象/var/www/htdocs这样的绝对地址参数。
$mode:目录访问权限属性设置参数,主要在linux/Uinx系统下使用,Windows下使用可忽略该参数。该参数默认值为0777。
返回值:如果正确创建了目录树,则返回true,否则为false。
**注意,在创建目多级录树时,必须使用默认值(0777),且必须确保父目录的访问权限属性为0777。
使用举例:
=============================================================
代码:
mkdirs('/var/www/htdocs/3rd');rmdirs()
函数原型:
/**
* 删除指定目录及其下的所有文件和子目录
*
*/
function rmdirs($dir)
参数说明:
$dir:路径参数,使用的是象/var/www/htdocs这样的绝对地址参数。
返回值:正确删除返回true,否则返回false。
**注意:使用该函数要非常非常小心,避免意外删除重要文件。而且为了确保rmdirs()函数能够使用正常,必须保证指定 的目录具有正确的读写访问权限。
使用举例:
代码:
rmdirs('/path/to/my_dir');==============================================================
mkdirs()函数实际使用测试:
先在Linux主机的web服务器根目录(/home/www/htdocs)下创建一个测试目录mkdirs_test,
[root@www htdocs]# mkdir mkdirs_test
查看目录mkdirs_test的权限
[root@www htdocs]# ll -d mkdirs_test
显示的访问权限如下:
drwxr-xr-x 2 root root 4096 Apr 5 12:21 mkdirs_test
修改mkdirs_test目录的访问权限为777:
[root@www htdocs]# chmod 777 mkdirs_test
查看修改后的访问权限:
[root@www htdocs]# ll -d mkdirs_test
显示修改后的访问权限:
drwxrwxrwx 2 root root 4096 Apr 5 12:21 mkdirs_test
把FileSystem.php文件及mkdirstest.php测试文件上传到该目录下。
mkdirstest.php文件代码:
- <?php
- include('FileSystem.php');
- echo "测试PHP的内部函数mkdir正确创建目录时的返回值:<br>";
- $m = mkdir('/home/www/htdocs/mkdirs_test/1');
- echo $m . "<br>";
- echo "测试PHP的内部函数mkdir函数创建目录不正确时的返回值:<br>";
- $m = mkdir('/home/www/htdocs/mkdirs_test/1');
- echo $m . "<br>";
- echo "测试mkdirs函数正确创建目录时的返回值:<br>";
- $dir = '/home/www/htdocs/mkdirs_test/1rd';
- $m = mkdirs($dir);
- echo $m . "<br>";
- echo "测试mkdirs函数创建目录不正确时的返回值:<br>";
- $dir = '/home/www/htdocs/mkdirs_test/1rd';
- $m = mkdirs($dir);
- echo $m . "<br>";
- echo "测试mkdirs函数传入$mode=0644参数创建2rd子目录:<br>";
- $dir = '/home/www/htdocs/mkdirs_test/2rd';
- $m = mkdirs($dir, 0644);
- echo $m . "<br>";
- echo "测试mkdirs函数创建多级子目录的能力:<br>";
- $dir = '/home/www/htdocs/mkdirs_test/3rd/4rd/5rd';
- $m = mkdirs($dir);
- echo $m . "<br>";
- echo "测试mkdirs函数创建多级子目录及设置其访问权限属性的能力:<br>";
- $dir = '/home/www/htdocs/mkdirs_test/6rd/7rd/8rd';
- $m = mkdirs($dir, 0644);
- echo $m;
- ?>
查看一下当前目录的文件情况:
[root@www mkdirs_test]# ll
total 16
-rwxrw-r-- 1 www www 2082 Apr 3 11:16 FileSystem.php
-rwxrw-r-- 1 www www 182 Apr 5 12:53 mkdirstest.php
由文件访问的权限属性说明其他用户可读,因此可以打开浏览器进行测试了。
运行mkdirstest.php文件后,浏览器显示的结果:
测试PHP的内部函数mkdir正确创建目录时的返回值:
1
测试PHP的内部函数mkdir函数创建目录不正确时的返回值:
Warning: mkdir(/home/www/htdocs/mkdirs_test/1): File exists in /home/www/htdocs/mkdirs_test/mkdirstest.php on line 7
测试mkdirs函数正确创建目录时的返回值:
1
测试mkdirs函数创建目录不正确时的返回值:
1
测试mkdirs函数传入=0644参数创建2rd子目录:
1
测试mkdirs函数创建多级子目录的能力:
1
测试mkdirs函数创建多级子目录及设置其访问权限属性的能力:
Warning: mkdir(/home/www/htdocs/mkdirs_test/6rd/7rd): Permission denied in /home/www/htdocs/mkdirs_test/FileSystem.php on line 35
Warning: mkdir(/home/www/htdocs/mkdirs_test/6rd/7rd/8rd): Permission denied in /home/www/htdocs/mkdirs_test/FileSystem.php on line 35
查看目录情况:
[root@www mkdirs_test]# ll
total 56
drwxr-xr-x 2 nobody 4294967295 4096 Apr 5 18:21 1
drwxr-xr-x 2 nobody 4294967295 4096 Apr 5 18:21 1rd
drw-r--r-- 2 nobody 4294967295 4096 Apr 5 18:21 2rd
drwxr-xr-x 3 nobody 4294967295 4096 Apr 5 18:21 3rd
drw-r--r-- 2 nobody 4294967295 4096 Apr 5 18:21 6rd
-rwxrw-r-- 1 www www 2082 Apr 3 11:16 FileSystem.php
-rwxrw-r-- 1 www www 989 Apr 5 18:21 mkdirstest.php
[root@www mkdirs_test]# ll 3rd
total 8
drwxr-xr-x 3 nobody 4294967295 4096 Apr 5 18:01 4rd
[root@www mkdirs_test]# cd 3rd
[root@www 3rd]# ll 4rd
total 8
drwxr-xr-x 2 nobody 4294967295 4096 Apr 5 18:01 5rd
[root@www mkdirs_test]# ll 6rd
total 0
运行结果说明:
1、PHP的内部函数mkdir正确创建了子目录1,返回值为1。
2、PHP的内部函数mkdir重复创建子目录1时不正确,没有返回值,但出现警告。
3、mkdirs函数正确创建了子目录1rd,返回值为1。
4、mkdirs函数重复创建子目录1rd时,返回值为1,且没有警告。
5、mkdirs函数传入$mode=0644参数创建2rd子目录正确,返回值为1。
6、mkdirs函数创建正确创建了多级子目录,返回值为1。
7、mkdirs函数传入$mode=0644参数创建多级子目录时,只创建了第一级子目录,第二、第三级不能创建。说明在使用mkdirs函数时,必须确保上级目录的访问权限属性必须为0777。
==============================================================
rmdirs()函数实际使用测试:
上传rmdirstest.php文件到/home/www/htdocs/mkdirs_test目录。
rmdirstest.php文件代码:
代码:
<?php
include('FileSystem.php');
rmdirs('/home/www/htdocs/mkdirs_test/3rd');
echo "执行完毕。";
?>运行前的目录情况:
[root@www mkdirs_test]# ll
total 64
drwxr-xr-x 2 nobody 4294967295 4096 Apr 5 18:56 1
drwxr-xr-x 2 nobody 4294967295 4096 Apr 5 18:56 1rd
drw-r--r-- 2 nobody 4294967295 4096 Apr 5 18:56 2rd
drwxr-xr-x 3 nobody 4294967295 4096 Apr 5 18:56 3rd
drw-r--r-- 2 nobody 4294967295 4096 Apr 5 18:56 6rd
-rwxrw-r-- 1 www www 2082 Apr 3 11:16 FileSystem.php
-rwxrw-r-- 1 www www 989 Apr 5 18:21 mkdirstest.php
-rwxrw-r-- 1 www www 102 Apr 5 18:55 rmdirstest.php
3rd子目录里用touch命令创建了三个空文件。
[root@www mkdirs_test]# ll 3rd
total 20
-rw-r--r-- 1 nobody nobody 0 Apr 5 18:57 1
-rw-r--r-- 1 nobody nobody 0 Apr 5 18:57 2
-rw-r--r-- 1 nobody nobody 0 Apr 5 18:57 3
drwxr-xr-x 3 nobody nobody 4096 Apr 5 18:56 4rd
打开浏览器,运行rmdirstest.php文件。
显示目录情况:
[root@www mkdirs_test]# ll
total 56
drwxr-xr-x 2 nobody 4294967295 4096 Apr 5 18:56 1
drwxr-xr-x 2 nobody 4294967295 4096 Apr 5 18:56 1rd
drw-r--r-- 2 nobody 4294967295 4096 Apr 5 18:56 2rd
drw-r--r-- 2 nobody 4294967295 4096 Apr 5 18:56 6rd
-rwxrw-r-- 1 www www 2082 Apr 3 11:16 FileSystem.php
-rwxrw-r-- 1 www www 989 Apr 5 18:21 mkdirstest.php
-rwxrw-r-- 1 www www 102 Apr 5 18:55 rmdirstest.php
不见了3rd目录,说明已被rmdirs()函数整个删除掉,包括里面的文件及子目录。



