Поиск неработающих символических ссылок с помощью переполнения стека

Я пишу сценарий сборки / развертывания с использованием PHP-сценария CLI.

Скажи у меня есть каталог /environment и в нем просто две сломанные символические ссылки.

я бегу glob(/environment/{,.}*), Когда я вижу все вокруг, все, что я вижу, это . а также .., Символические ссылки никогда не отображаются в списке.

Как вы можете перебрать каталог, обнаружить битые символические ссылки и unlink() их с помощью PHP?

1

Решение

На сломанной символической ссылке 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);
}
}
3

Другие решения

шарик не перечисляет неработающие символические ссылки.
Чтобы проверить, существует ли имя файла и является ли он символической ссылкой, используйте is_link

0

использование realpath функция:

foreach(scandir($dir) as $entry) {
$path = $dir . DIRECTORY_SEPARATOR . $entry;
if (realpath($path)) {
@unlink($path);
}
}
0
По вопросам рекламы [email protected]