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

问题描述 投票:1回答:1

我目前正在创建一个应用程序,以根据预定义主题生成和管理项目名称。这个应用程序具有非常基本的云保存功能。它的设计超级简单,通过将生成的保存数据保存在服务器上的文件上,无需数据库即可工作。

为了让程序下载所有保存的文件,我需要在服务器上的一个文件夹中列出所有保存的文件。然而,我似乎无法从服务器上得到预期的响应。我已经尝试了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方法的输出。所以,客户端和服务器之间的通信是正常的,但是所有扫描目录文件的选项都不正常。

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

php list directory scandir
1个回答
0
投票

如果文件在同一个目录下,你可以使用绝对路径。

$dir = __DIR__;

或者使用相对路径,如果它们在同一个目录下。

$dir = "./";

0
投票

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

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

$dir = "WordPress_SecureMode_01/Bubba/";

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

如果它给你 是的,是的 这意味着它不是关于路径,如果它返回你 没有 那么请更改你的路径到该文件夹。

© www.soinside.com 2019 - 2024. All rights reserved.