1
我试图递归扫描文件夹并将每个* .h文件找到的路径存储到数组中。PHP 5.6 - 函数is_dir()权限问题
function findfiles($input, &$array){
$dir = scandir($input);
foreach($dir as $file)
{
if ($file !== "." && $file !== "..")
{
if (is_file(realpath($file)) && substr($file, -2) === ".h")
{
array_push($array, realpath($file));
}
if (is_dir(realpath($file)) //I'M EVEN USING ABSOLUTE PATH
{
findfiles(realpath($file), $array);
}
}
}
}
$input="./"
$array = array();
findfiles($input, $array);
我想这应该工作,但功能is_dir()用于目录返回FALSE“./atest/AA”和“./atest/FolderInside”即使我有设置的所有权限。
drwxrwxrwx 2 root root 0 úno 14 18:46 AA
drwxrwxrwx 2 root root 0 úno 14 15:12 FolderInside
伟大工程与其他文件夹“ATEST”和“测试1”,即使他们有设置相同的权限。
drwxrwxrwx 2 root root 0 úno 14 18:46 atest
drwxrwxrwx 2 root root 0 úno 14 15:39 test1
请问为什么?
我修改了我的代码的错误行。其实我使用的是realpath($ file),它返回文件的完整路径。你能不能现在看看并告诉我它是否仍然不好?我想我不必使用你的方法,但非常感谢你的回应。 –
'realpath'在你的代码中没有用处,因为'scandir'只返回一个没有路径的文件名列表。而'realpath'不能确定'file.h'从哪个目录来......所以如果它不存在于当前目录中,它只会返回'false'。 –
谢谢你,你是对的。现在正在工作。 –