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

Why do scandir, opendir and glob all NOT return my directory contents

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

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

$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 方法的输出。因此,客户端和服务器之间的通信工作正常,但扫描目录文件的所有选项都不是。

有人知道为什么会出现这种行为吗?

在您的代码中 $dir 不是一个目录,这就是代码没有前进的原因。

请检查路径是否为dir,只需执行

$dir = "WordPress_SecureMode_01/Bubba/";

if (is_dir($dir)) {
echo 'Yes';
}
else{
echo 'No';
}

如果它给你 Yes 这意味着它与路径无关,如果它 returns 你 No 那么请改变你的该文件夹的路径。

如果文件位于同一目录中,您要么想要使用绝对路径:

$dir = __DIR__;

或相对路径,如果它们在同一目录中:

$dir = "./";