尝试从相对路径获取文件时,glob 未返回任何结果

glob is returning no results when trying to get files from a relative path

我的应用程序在 IIS 上 运行,物理目录结构如下所示:

C:\inetpub\wwwroot\myApplication\index.php
C:\inetpub\wwwroot\myApplication\includes\myfunctions.php
C:\inetpub\wwwroot\myApplication\includes\import_data\users\

最后一个文件夹包含 978 个 .cgi 文件,我正在尝试从中读取数据。

index.php 包含 includes/myfunctions.php 并调用其中的一个方法 -- CheckForUsersToImport() 定义如下:

function CheckForUsersToImport()
{
    $usersDir = "import_data/users/";

    $globRes = glob($usersDir . "*.cgi");
    var_dump($globRes);
    
    echo "End CheckForUsersToImport();";
}

当我在浏览器中导航到 localhost/myApplication/index.php 时,我得到以下输出:

array(0) { } End CheckForUsersToImport();

我尝试将第二行代码更改为 $globRes = glob("*.cgi"); 但这会产生完全相同的输出。

我找到了 this question 但接受的答案对我不起作用。

我试过:

$usersDir = "./import_data/users/";
$usersDir = "/import_data/users/";
$usersDir = "import_data/users/";

但是所有 3 个都给我与上面代码完全相同的输出。

如何获取目录中所有扩展名为 ".cgi" 的文件 'beneath' 正在执行的函数?

编辑:

我更新了我的函数如下:

function checkUserData()
{
    $usersDir = "import_data/users";
    $globRes = scandir($usersDir);
}

运行时,我得到以下输出:

[phpBB Debug] PHP Warning: in file [ROOT]/includes/myfunctions.php on line 5: scandir(import_data/users,import_data/users): The system cannot find the path specified. (code: 3)

[phpBB Debug] PHP Warning: in file [ROOT]/includes/myfunctions.php on line 5: scandir(import_data/users): failed to open dir: No such file or directory

[phpBB Debug] PHP Warning: in file [ROOT]/includes/myfunctions.php on line 5: scandir(): (errno 2): No such file or directory

为什么它在第一个错误中寻找 scandir(import_data/users,import_data/users)?这根本不是我传递给 scandir()!

的——或者至少,我认为我传递的不是——

考虑到您的错误消息表明您正在 phpBB 中工作,应用程序可能必须在您的代码执行之前更改当前工作目录,并且您的相对路径在 PHP 当前所在的位置无效执行。

您可以检查工作目录,看看它是否确实是您的文档根目录或其他地方:

echo getcwd();

尽可能指定磁盘上任何文件或目录的完整路径。在这种情况下,我可能会使用 __DIR__ 常量来引用定义该函数的脚本所在的目录:

$usersDir = __DIR__ '/import_data/users/';