Php 如何找到指向当前文件的符号链接?

Php 如何找到指向当前文件的符号链接?,php,perl,Php,Perl,在PHP或Perl中有没有找到指向当前文件的所有符号链接的方法?必须遍历文件系统或使用find(它本身遍历FS)。符号链接实际上并没有以任何有意义的方式链接到文件;它们只包含指向真实文件的路径。这些链接可以在任何地方,在路径中使用之前,操作系统根本不需要知道它们。无需遍历文件系统查找所有符号链接,然后检查它们的目的地,不需要。但是如果您仍然想这样做,这很简单: use strict; use warnings; use File::Find; my $target = 'the filenam

在PHP或Perl中有没有找到指向当前文件的所有符号链接的方法?

必须遍历文件系统或使用
find
(它本身遍历FS)。符号链接实际上并没有以任何有意义的方式链接到文件;它们只包含指向真实文件的路径。这些链接可以在任何地方,在路径中使用之前,操作系统根本不需要知道它们。

无需遍历文件系统查找所有符号链接,然后检查它们的目的地,不需要。但是如果您仍然想这样做,这很简单:

use strict;
use warnings;
use File::Find;

my $target = 'the filename you want to find links to';
finddepth(
    sub {
        return if not -l $File::Find::name;
        print "found $File::Find::name!\n" if readlink($File::Find::name) eq $target;
    },
    '/'
);

没有搜索整个文件系统就不行

符号链接(至少在linux中)基本上是指针。他们从一个位置指向另一个位置,但如果不进行彻底搜索,他们所指向的位置无法知道指向它的是什么


您可以通过完全搜索来完成这项工作,但这很容易需要很长时间,具体取决于您的系统。

在PHP中,理论上,您可以使用a并将其设置为从文件系统根目录进行遍历。然后,您可以检查,如果是,请使用查看它指向的位置:

$fsi = new RecursiveIteratorIterator(
    new RecursiveDirectoryIterator('/'),
    RecursiveIteratorIterator::SELF_FIRST
);
foreach ($fsi as $fso) {
    if ($fso->isLink()) {
        echo readlink($fso->getPathname());
    }
}

实际上,执行PHP脚本的用户可能不允许这样做。

谢谢,我希望避免扫描整个文件系统,但我很欣赏代码:-)