PHP – 创建目录



计算机文件存储在本地存储设备(称为驱动器)中,并以分层顺序排列,其中目录包含一个或多个文件以及子目录。操作系统 Windows、Linux 等中定义的相应 DOS 命令用于创建和管理目录。

PHP 提供目录管理函数来创建目录、更改当前目录和删除特定目录。

本章讨论 PHP 中以下目录函数的用法:

mkdir() 函数

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

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

参数

  • $directory − 第一个参数 $directory 是必需的。它是一个字符串,包含要创建的新目录的绝对路径或相对路径。

  • $permissions − 第二个参数 $permissions 是一个八进制数,包含四个八进制数字。第一个数字始终为零,第二个指定所有者的权限,第三个指定所有者用户组的权限,第四个指定其他所有人的权限。

每个数字都是每种权限值的总和:

  • 1 = 执行权限

  • 2 = 写权限

  • 4 = 读权限

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

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

  • $recursive − 如果为 true,则还会创建指定目录的任何父目录,并使用相同的权限。

  • $context − 此可选参数是流资源。

mkdir() 函数返回 true 或 false,指示函数是否已成功执行。

示例

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

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

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

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

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

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

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

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

Create Directory

chdir() 函数

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

chdir(string $directory): bool

此函数的字符串参数是目录的绝对路径或相对路径,需要将当前目录更改为此目录。它返回 true 或 false。

getcwd() 函数

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

示例

使用以下代码片段,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;
?>

它将产生以下输出

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

rmdir() 函数

rmdir() 函数删除路径作为参数给出的特定目录。要删除的目录必须为空。

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