尝试从相对路径获取文件时,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/';
我的应用程序在 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/';