PHP Conference Japan 2024
添加注释

用户贡献的注释 8 个注释

anagai at yahoo dot com
12 年前
这将在代码的一行中删除目录中与模式匹配的所有文件。

<?php array_map('unlink', glob("some/dir/*.txt")); ?>
dexen dot devries at gmail dot com
13 年前
删除了一个大文件,但没有看到可用空间增加或磁盘使用量减少?使用 UNIX 或其他 POSIX 操作系统?

unlink() 与删除文件无关,而是与删除文件名有关。手册页说:“unlink - 删除一个名称,并可能删除它引用的文件”。

大多数情况下,一个文件只有一个名称——删除它也将删除(释放、释放)文件的主体(有一个例外,见下文)。这是简单、常见的情况。

但是,一个文件完全可以有多个名称(参见 link() 函数),在同一个或不同的目录中。所有名称都将引用文件主体并“使其保持活动状态”,可以说。只有当所有名称都被删除时,文件主体才会真正被释放。

例外
文件的正文也可能被一个持有文件打开的进程“保持活动状态”(仍在使用磁盘空间)。只要进程持有文件打开,正文就不会被释放(不会释放磁盘空间)。事实上,有一种巧妙的方法可以恢复因错误删除但仍由进程持有的文件……
deen804 at gmail dot com
10 年前
unlink($fileName); 对我来说失败了。
然后我尝试使用 realpath($fileName) 函数,如下所示
unlink(realpath($fileName)); 它起作用了

只是发布一下,以防万一有人发现它有用。
federico at poisonfx dot com
13 年前
这是删除带有掩码的文件的最简单方法

<?php
$mask
= "*.jpg"
array_map( "unlink", glob( $mask ) );
?>
PD
16 年前
我一直在进行一些小尝试,在修改主文本文件之前创建备份文件。然后,当抛出错误时,将删除主文件(取消链接)并返回备份文件。

不过,我已经为此苦恼了一个小时,不知道为什么我无法获得正确的权限来取消链接主文件。

最后我明白了问题所在:因为我正在处理文件并且还没有关闭文件,所以它仍在使用中,当然无法删除 :)

因此,我想在这里提一下,以避免其他人犯同样的错误

<?php
// 首先关闭文件
fclose($fp);

// 然后取消链接 :)
unlink($somefile);
?>
chris at vibenewmedia dot com
20 年前
要删除所有特定扩展名的文件,或者实际上,删除所有带有通配符的文件,一种更简单的方法是使用 glob 函数。假设我想删除所有 jpg ……

<?php

foreach (glob("*.jpg") as $filename) {
echo
"$filename size " . filesize($filename) . "\n";
unlink($filename);
}

?>
gotdalife at gmail dot com
16 年前
对于任何遇到权限被拒绝错误的人来说,它有时是由尝试删除工作目录层次结构中更高文件夹中的文件引起的(即,尝试删除以“../”开头的路径)。

因此,为了解决此问题,您可以使用 chdir() 将工作目录更改为要取消链接的文件所在的文件夹。

<?php
$old
= getcwd(); // 保存当前目录
chdir($path_to_file);
unlink($filename);
chdir($old); // 恢复旧的工作目录
?>
Eric
10 年前
这可能看起来很明显,但我为此问题苦恼不已 - 确保您尝试删除的文件当前未被使用。我有一个脚本正在解析文本文件,并且应该在完成后删除它,但一直收到权限被拒绝错误,因为我没有显式关闭文件,因此从技术上讲它仍在“使用”中,即使解析已完成。
To Top