PHP scandir 不起作用
PHP scandir doesn't work
我看到另一个问题有同样的问题,但只有 1 个答案,对我没有用。
问题:PHP scandir - multiple directories
我正在使用 Joomla!创建我的网站
(我用模板创建所有东西,大多数我不明白创建扩展)。
因此,我在主文件夹中创建了文件夹 pbfData
。
我在其中创建了文件夹 users
。但是 scandir 没有检测到任何这些。
错误(没有 if (is_dir)
)
Warning: scandir(/pbfData/) [function.scandir]: failed to open dir: No such file or directory in [...]/pbf/index.php on line 61
Warning: scandir() [function.scandir]: (errno 2): No such file or directory in [...]/pbf/index.php on line 61
Fatal error: Cannot access empty property in [...]/pbf/index.php on line 61
代码如下所示:
class users {
var $users;
function refUsers() {
$dir = '/pbfData/';
if (is_dir($dir)) {
$this->$users = scandir($dir);
} else {
echo "<b>CRITICAL ERROR: </b>No access to users directory.";
}
}
[...] }
输出
CRITICAL ERROR: No access to users directory.
(注意: 添加 is_dir
来解决它是对另一个问题的回答,但正如我所写的那样,它对我不起作用。)
您正在检查文件夹 /pdfData/
是否存在,并且由于路径以 /
开头,您真正要检查的是您的文件夹中是否有名称为 pdfData
的文件夹ROOT 文件夹(windows 中的 C:\
或 D:\
[etc],以及 linux/unix 中的 /
。
这意味着如果你 运行 你的脚本 /var/www/html/pdf/index.php
,如果你有文件夹 /var/www/html/pdf/pdfData
- 函数 is_dir('/pdfData/')
将 return false,因为您的 ROOT/
中没有该文件夹
Folder structure
----------------
/pdfData/ <-- This is the folder that your code check (which doesn't exists)
/var/
/var/www/
/var/www/pdf/
/var/www/pdf/pdfData/ <-- This is the folder you want to check for
如果您想检查当前文件夹中的文件夹 pdfData
,您 运行 从中获取代码,您应该使用 $dir = 'pbfData/';
(没有起始斜线)
另一种选择是使用 __DIR__
魔法常量:
$dir = __DIR__ . '/pbfData/';
is_dir
不是获取目录路径的解决方案,它只是检查文件是否是目录。要获取路径,您可以在 Joomla 中使用 JPATH_SITE 或 JPATH_BASE 等。 Joomla 已经带有内置常量。看看这里 https://docs.joomla.org/Constants .
您的代码将是
$dir = JPATH_BASE."/pbfData",
我看到另一个问题有同样的问题,但只有 1 个答案,对我没有用。
问题:PHP scandir - multiple directories
我正在使用 Joomla!创建我的网站 (我用模板创建所有东西,大多数我不明白创建扩展)。
因此,我在主文件夹中创建了文件夹 pbfData
。
我在其中创建了文件夹 users
。但是 scandir 没有检测到任何这些。
错误(没有 if (is_dir)
)
Warning: scandir(/pbfData/) [function.scandir]: failed to open dir: No such file or directory in [...]/pbf/index.php on line 61
Warning: scandir() [function.scandir]: (errno 2): No such file or directory in [...]/pbf/index.php on line 61
Fatal error: Cannot access empty property in [...]/pbf/index.php on line 61
代码如下所示:
class users {
var $users;
function refUsers() {
$dir = '/pbfData/';
if (is_dir($dir)) {
$this->$users = scandir($dir);
} else {
echo "<b>CRITICAL ERROR: </b>No access to users directory.";
}
}
[...] }
输出
CRITICAL ERROR: No access to users directory.
(注意: 添加 is_dir
来解决它是对另一个问题的回答,但正如我所写的那样,它对我不起作用。)
您正在检查文件夹 /pdfData/
是否存在,并且由于路径以 /
开头,您真正要检查的是您的文件夹中是否有名称为 pdfData
的文件夹ROOT 文件夹(windows 中的 C:\
或 D:\
[etc],以及 linux/unix 中的 /
。
这意味着如果你 运行 你的脚本 /var/www/html/pdf/index.php
,如果你有文件夹 /var/www/html/pdf/pdfData
- 函数 is_dir('/pdfData/')
将 return false,因为您的 ROOT/
Folder structure
----------------
/pdfData/ <-- This is the folder that your code check (which doesn't exists)
/var/
/var/www/
/var/www/pdf/
/var/www/pdf/pdfData/ <-- This is the folder you want to check for
如果您想检查当前文件夹中的文件夹 pdfData
,您 运行 从中获取代码,您应该使用 $dir = 'pbfData/';
(没有起始斜线)
另一种选择是使用 __DIR__
魔法常量:
$dir = __DIR__ . '/pbfData/';
is_dir
不是获取目录路径的解决方案,它只是检查文件是否是目录。要获取路径,您可以在 Joomla 中使用 JPATH_SITE 或 JPATH_BASE 等。 Joomla 已经带有内置常量。看看这里 https://docs.joomla.org/Constants .
您的代码将是
$dir = JPATH_BASE."/pbfData",