使用php查找断开的符号链接

使用php查找断开的符号链接,php,symlink,glob,Php,Symlink,Glob,我正在使用CLI php脚本编写构建/部署脚本 假设我有一个目录/environment,其中只有两个断开的符号链接 我正在运行glob(/environment/{,.}*)。当我走遍全球时,我所看到的只有和。。符号链接从未显示在列表中 如何使用PHP在目录上循环、检测断开的符号链接并取消链接()它们?不列出断开的符号链接。 要检查文件名是否存在并且是否是符号链接,请在断开的符号链接上使用is\u link()返回true和文件是否存在()返回false 由于glob()没有列出断开的符号链接

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

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

我正在运行
glob(/environment/{,.}*)
。当我走遍全球时,我所看到的只有
。符号链接从未显示在列表中

如何使用PHP在目录上循环、检测断开的符号链接并取消链接()它们?

不列出断开的符号链接。

要检查文件名是否存在并且是否是符号链接,请在断开的符号链接上使用
is\u link()
返回
true
文件是否存在()
返回
false

由于
glob()
没有列出断开的符号链接,因此必须以不同的方式列出内容。 下面是一个使用
scandir()的示例


使用
realpath
功能:

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

但如果不知道要检查的路径,则无法运行is_link()。。。是否有一个命令可以在PHP中迭代目录的内容以检测损坏的符号链接?“glob不列出损坏的符号链接。”这意味着,如果符号链接已损坏,glob将不会列出它,因此,无需检查它,因为它已经损坏。问题是我无法获得要操作的损坏链接列表。我需要这个列表,这样我就可以遍历并删除它们。不要使用
@
。错误是需要的,您有足够的检查。
foreach(scandir($dir) as $entry) {
    $path = $dir . DIRECTORY_SEPARATOR . $entry;
    if (!realpath($path)) {
        @unlink($path);
    }
}