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