PHP - 删除文件


PHP 既没有 delete 关键字也没有 delete() 函数。相反,它提供 unlink() 函数,调用该函数时,会从文件系统中删除文件。它类似于 Unix/Cunlink 功能。

如果无法完成删除操作,PHP 将返回 false 并显示 E_WARNING 消息。


unlink(string $filename, ?resource $context = null): bool

unlink() 函数的强制字符串参数是引用要删除的文件的字符串。

例子

以下代码演示了 unlink() 函数的简单用法 -


<?php
   $file = "my_file.txt";

   if (unlink($file)) {
      echo "文件已成功删除。";
   } else {
      echo "无法删除该文件。";
   }
?>

删除指向文件的符号链接

unlink() 函数还可以删除指向文件的符号链接。但是,删除符号链接不会删除原始文件。符号链接是现有文件的快捷方式。

在 Windows 中,使用管理员权限打开命令提示符,并使用带有 /h 开关的 mlink 命令创建指向文件的符号链接。(/j 开关用于指向文件夹的符号链接)

mklink /h hellolink.lnk hello.txt
Hardlink created for hellolink.lnk <<===>> hello.txt

在 Ubuntu Linux 中,要创建指向文件的符号链接,您可以使用以下命令 -

 ln -s /path/to/original_file /path/to/symlink

要创建指向目录的符号链接,请使用以下命令 -

 ln -s /path/to/original_directory /path/to/symlink

在 PHP 中,还有一个 symlink() 函数。


 symlink(string $target, string $link): bool

例子

使用以下代码创建符号链接 -


<?php
   $target = 'hello.txt';
   $link = 'hellolink.lnk';
   symlink($target, $link);

   echo readlink($link);
?>

现在删除上面创建的符号链接 -

unlink("hellolink.lnk");

如果检查当前工作目录,符号链接将被删除,原始文件保持不变。

PHP 重命名文件

您可以借助操作系统控制台中的相应命令更改现有文件的名称。例如,Linux 终端中的“mv 命令”或 Windows 命令提示符中的“rename 命令”可帮助您更改文件名。

但是,要以编程方式重命名文件,PHP 的内置库包括一个 rename() 函数。

这是 rename() 函数的语法 -


rename(string $from, string $to, ?resource $context = null): bool

$from 和 $to 字符串分别是文件 existingnew 的名称。rename() 函数尝试将 $from 重命名为 $to,并在必要时在目录之间移动它。

如果要重命名文件并且 $to 已存在,则它将被覆盖。如果要重命名目录并且 $to 目录存在,则此函数将发出警告。

要将 “hello.txt” 的名称更改为 “test.txt” -


<?php
   rename("hello.txt", "test.txt");
?>

您也可以采用一些间接方法来重命名文件。复制现有文件并删除原始文件。这也会将 “hello.txt” 重命名为 “test.txt” −

copy("hello.txt", "test.txt");
unlink("hello.txt");