Php 简明教程

PHP – Create Directory

计算机文件按层次顺序存储在本地存储设备 (称为 drive ) 中,其中一个目录包含一个或多个文件以及子目录。用于创建和管理目录的各自 DOS 命令在操作系统 Windows、Linux 等等中进行定义。

PHP 提供了目录管理函数来创建目录、更改当前目录和移除某个目录。

本章讨论在 PHP 中使用以下目录函数的情况 -

The mkdir() Function

mkdir() 函数创建一个新目录,它的路径作为函数之一的参数给出

mkdir(
   string $directory,
   int $permissions = 0777,
   bool $recursive = false,
   ?resource $context = null
): bool

Parameters

  1. $directory - 第一个参数 $directory 是必须的。它是一个字符串,其中包含要创建的新目录的绝对路径或相对路径。

  2. $permissions - 第二个参数 $permissions 是一个八进制数字,带有四个八进制数字。第一个数字始终为零,第二个数字指定属主的权限,第三个数字指定属主的用户组,第四个数字指定其他人。

每个数字都是针对每种权限类型的值的和 -

  1. 1 = execute permission

  2. 2 = write permission

  3. 4 = read permission

$permissions 参数的默认值为 0777 ,这意味着创建目录时启用了执行、写入和读取权限。

请注意,在 Windows 操作系统上工作时,$permissions 参数会被忽略。

  1. $recursive - 如果为 true,则指定目录的任何父目录也会被创建,并具有相同的权限。

  2. $context - 这个可选参数是流资源。

mkdir() 函数返回真或假,表示函数是否已成功执行。

Examples

以下是 mkdir() 函数的一些示例。

对 mkdir() 的以下调用在当前工作目录中创建子目录。点表示路径是相对的。

$dir = "./mydir/";
mkdir($dir);

我们可以提供包含要创建的目录的绝对路径的字符串参数。

$dir = "c:/newdir/";
mkdir($dir);

由于 $recursive 参数设置为 true,对 mkdir() 的以下调用包含当前目录内的嵌套目录结构。

$dirs = "./dir1/dir2/dir3/";
mkdir($dirs, 0777, true);

Windows 资源管理器将显示嵌套目录结构,如下所示:

create directory

The chdir() Function

PHP 中的 chdir() 函数对应于 Linux/Windows 中的 chdircd 命令。它会导致根据需要更改当前目录。

chdir(string $directory): bool

此函数的字符串参数是要将当前目录更改到的目录的绝对或相对路径。它返回真或假。

The getcwd() Function

getcwd() 函数的工作方式类似于 Ubuntu Linux 中的 pwd 命令,并返回当前工作目录的路径。

Example

使用以下代码段,PHP 会在更改当前工作目录之前和之后显示当前工作目录。新当前目录中创建了一些文件。使用 scandir() 函数列出文件。

<?php
   echo "current directory: ". getcwd() . PHP_EOL;
   $dir = "./mydir";
   chdir($dir);
   echo "current directory changed to: ". getcwd() .PHP_EOL;

   $fp = fopen("a.txt", "w");
   fwrite($fp, "Hello World");
   fclose($fp);

   copy("a.txt", "b.txt");
   $dir = getcwd();
   foreach(scandir($dir) as $file)
   echo $file . PHP_EOL;
?>

它将生成以下 output

current directory: C:\xampp\php
current directory changed to: C:\xampp\php\mydir
.
..
a.txt
b.txt

The rmdir() Function

rmdir() 函数删除了以参数形式给出的路径的某个目录。要删除的目录必须为空。

$dir = "c:/newdir/";
rmdir($dir) or die("The directory is not present or not empty");