为什么 scandir、opendir 和 glob 都不返回我的目录内容

我目前正在创建一个应用程序以根据预定义的主题生成和管理项目名称。此应用程序具有非常基本的云保存功能。它非常简单,旨在通过将生成的保存数据保存在服务器上的文件中来在没有数据库的情况下工作。


为了让程序下载所有已保存的文件,我需要列出服务器上一个文件夹中的所有已保存文件。但是,我似乎无法从我的服务器获得预期的响应。我尝试了 3 种不同的方法来列出所有文件,但没有一种方法返回任何文件,这对我来说似乎很奇怪。


$dir = "WordPress_SecureMode_01/Bubba/";


echo pathinfo($dir, PATHINFO_DIRNAME);


// Open a known directory, and proceed to read its contents

if (is_dir($dir)) {

    if ($dh = opendir($dir)) {

        while (($file = readdir($dh)) !== false) {

            echo "filename: $file : filetype: " . filetype($dir . $file) . "\n";

        }

        closedir($dh);

    }

}


$files = scandir('WordPress_SecureMode_01/Bubba/');


foreach($files as $file){


    echo $file;

    echo pathinfo($file, PATHINFO_FILENAME);

}


$entries = glob('WordPress_SecureMode_01/Bubba/*.txt');


foreach($entries as $entry){


    echo $entry;

}

如您所见,我现在使用三种不同的方法来检索文件。opendir、scandir 和 glob。他们所有的发现都被我的应用程序回应并因此检索。但是,我的应用程序收到的唯一数据是脚本顶部 pathinfo 方法的输出。因此,客户端和服务器之间的通信工作正常,但扫描目录文件的所有选项都不是。


有谁知道为什么会发生这种行为?


尚方宝剑之说
浏览 105回答 2
2回答

慕田峪7331174

如果文件位于同一目录中,您要么想要使用绝对路径:$dir = __DIR__;或者相对路径,如果它们在同一目录中:$dir = "./";

慕运维8079593

您的代码中的此处$dir不是目录,这就是代码没有前进的原因。请通过简单地执行来检查路径,无论它是否是 dir$dir = "WordPress_SecureMode_01/Bubba/";if (is_dir($dir)) {echo 'Yes';}else{echo 'No';}如果它给你是,这意味着它与路径无关,如果它返回给你否,那么请将你的路径更改为该文件夹。
打开App,查看更多内容
随时随地看视频慕课网APP