我正在使用CLI php脚本编写构建/部署脚本。
假设我有一个目录/environment
,其中只有两个损坏的符号链接。
我正在运行glob(/environment/{,.}*)
。当我绕过glob时,我看到的只有.
和..
。符号链接永远不会出现在列表中。
如何使用PHP循环遍历目录,检测损坏的符号链接和unlink()
?
答案 0 :(得分:3)
在损坏的符号链接上is_link()
返回true
,file_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)
答案 2 :(得分:0)
使用realpath
功能:
foreach(scandir($dir) as $entry) {
$path = $dir . DIRECTORY_SEPARATOR . $entry;
if (realpath($path)) {
@unlink($path);
}
}