【问题标题】:Why do scandir, opendir and glob all NOT return my directory contents为什么 scandir、opendir 和 glob 都不返回我的目录内容
【发布时间】:2020-05-24 18:06:07
【问题描述】:

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

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

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

【问题讨论】:

  • 您使用的是相对路径。对于踢球,您是否尝试过完整路径?
  • 这个脚本在什么目录下?大概是WordPress_SecureMode_01/
  • @Machavity 考虑到 'WordPress_SecureMode_01' 在根文件夹中,这不是完整路径吗?
  • @AbraCadaver 它在'WordPress_SecureMode_01/Bubba'里面
  • 然后是完整路径例如/var/html/WordPress_SecureMode_01/Bubba/ 使用echo __DIR__; 来查看。或者真的只是./

标签: php list directory scandir


【解决方案1】:

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

$dir = __DIR__;

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

$dir = "./";

【讨论】:

    【解决方案2】:

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

    请通过简单的执行检查路径是否是dir

    $dir = "WordPress_SecureMode_01/Bubba/";
    
    if (is_dir($dir)) {
    echo 'Yes';
    }
    else{
    echo 'No';
    }
    

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-11-19
      • 2017-03-16
      • 2016-09-24
      • 1970-01-01
      • 1970-01-01
      • 2021-07-14
      相关资源
      最近更新 更多