使用php查找服务器上文件的路径-

使用php查找服务器上文件的路径-,php,filepath,absolute-path,Php,Filepath,Absolute Path,我想知道如何使用glob()函数获取我找到的文件的绝对文件路径。我能够使用 foreach (glob("access.php") as $filename) { echo "$filename absolutepath is: "; } 不确定哪个函数获取搜索文件的完整路径。试图用谷歌搜索,但找不到任何有意义的东西 谢谢 轻微更新: 我注意到glob()函数只搜索脚本运行的目录,这对我来说并不好。我需要一个相当于unix的函数find/-name“somename” 还有别的选择吗

我想知道如何使用
glob()
函数获取我找到的文件的绝对文件路径。我能够使用

foreach (glob("access.php") as $filename) {
    echo "$filename absolutepath is:  ";
}
不确定哪个函数获取搜索文件的完整路径。试图用谷歌搜索,但找不到任何有意义的东西

谢谢

轻微更新: 我注意到glob()函数只搜索脚本运行的目录,这对我来说并不好。我需要一个相当于unix的函数
find/-name“somename”


还有别的选择吗?或者我在glob()中遗漏了什么?

您可以使用realpath获取文件绝对路径。更多信息:

我认为您需要realpath(),如下所述:


如果您还必须在子目录中查找文件,可以使用以下方法:

foreach (glob("{access.php,{*/,*/*/,*/*/*/}access.php}", GLOB_BRACE) as $filename) {
    echo "$filename absolutepath is:  ".realpath($filename);
}

glob函数在其中搜索的目录可通过getcwd函数获得

要搜索给定路径的任何目录,可以使用以下代码段:

$dirToList       = '/home/username/documents';
$patternToSearch = '*.odt'; // e.g. search for LibreOffice OpenDocument files
$foundFiles      = FALSE;
$olddir          = getcwd();
if (chdir($dirToList)) {
    $foundFiles = glob($patternToSearch);
    chdir($olddir); // switch back to the dir the code was running in before
    if ($foundFiles) {
        foreach ($foundFiles as $filename) {
            echo nl2br(htmlentities(
                 'found file: '.$dirToList.DIRECTORY_SEPARATOR.$filename."\n"
                  , ENT_COMPAT, 'UTF-8'));
         }
     }
     // else echo 'no found files';
 }
 // else echo 'chdir error';
最终满足您的搜索愿望,如

查找/-name“somename”


您可以将该代码片段放在函数中,并在使用PHP的类遍历感兴趣的目录树时调用它。

不幸的是,这仍然不能满足我的需要?i、 e为了测试这一点,我在文件系统的某个地方放置了一个.txt文件,但这个函数没有找到它。注意:文件名有一个唯一的名称,因此FSIt上没有同名的第二个文件。它只在脚本文件目录或子目录中搜索给定的文件。我需要的是一个搜索整个文件系统的函数
$dirToList       = '/home/username/documents';
$patternToSearch = '*.odt'; // e.g. search for LibreOffice OpenDocument files
$foundFiles      = FALSE;
$olddir          = getcwd();
if (chdir($dirToList)) {
    $foundFiles = glob($patternToSearch);
    chdir($olddir); // switch back to the dir the code was running in before
    if ($foundFiles) {
        foreach ($foundFiles as $filename) {
            echo nl2br(htmlentities(
                 'found file: '.$dirToList.DIRECTORY_SEPARATOR.$filename."\n"
                  , ENT_COMPAT, 'UTF-8'));
         }
     }
     // else echo 'no found files';
 }
 // else echo 'chdir error';