Я пишу сценарий сборки / развертывания с использованием PHP-сценария CLI.
Скажи у меня есть каталог /environment
и в нем просто две сломанные символические ссылки.
я бегу glob(/environment/{,.}*)
, Когда я вижу все вокруг, все, что я вижу, это .
а также ..
, Символические ссылки никогда не отображаются в списке.
Как вы можете перебрать каталог, обнаружить битые символические ссылки и unlink()
их с помощью PHP?
На сломанной символической ссылке 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);
}
}
шарик не перечисляет неработающие символические ссылки.
Чтобы проверить, существует ли имя файла и является ли он символической ссылкой, используйте is_link
использование realpath
функция:
foreach(scandir($dir) as $entry) {
$path = $dir . DIRECTORY_SEPARATOR . $entry;
if (realpath($path)) {
@unlink($path);
}
}