使用php查找损坏的符号链接

时间:2015-05-11 01:40:30

标签: php symlink glob

我正在使用CLI php脚本编写构建/部署脚本。

假设我有一个目录/environment,其中只有两个损坏的符号链接。

我正在运行glob(/environment/{,.}*)。当我绕过glob时,我看到的只有...。符号链接永远不会出现在列表中。

如何使用PHP循环遍历目录,检测损坏的符号链接和unlink()

3 个答案:

答案 0 :(得分:3)

在损坏的符号链接上is_link()返回truefile_exists()返回false

由于glob()未列出损坏的符号链接,因此您必须以不同的方式列出内容。 以下是使用scandir()

的示例
   foreach(scandir($dir) as $entry) {
        $path = $dir . DIRECTORY_SEPARATOR . $entry;
        if (is_link($path) && !file_exists($path)) {
            @unlink($path);
        }
    }

答案 1 :(得分:0)

glob未列出损坏的符号链接 要检查文件名是否存在并且是符号链接,请使用is_link

答案 2 :(得分:0)

使用realpath功能:

foreach(scandir($dir) as $entry) {
    $path = $dir . DIRECTORY_SEPARATOR . $entry;
    if (realpath($path)) {
        @unlink($path);
    }
}