PHP readdir找到xml

时间:2016-02-27 08:39:35

标签: php xml

我继承了一段突然停止工作的代码。我已经将代码隔离到它,看起来这个函数不再读取目录并找到在其中找到的xml文件以供以后处理。我已经上传了大小写.xml / .XML扩展名的xml文件版本,但结果相同:找不到XML文件

我已经验证了print_r实际上正在读取xml文件所在的正确目录。目录中还有其他文件,但多年来一直如此。 PHP最近有什么变化可以阻止这段代码的运行吗?

function GetXMLFile($path) {
    $path .= "/";
    print_r($path); 
    $filename = "";
        if ($handle = opendir($path)) {
            while (false !== ($file = readdir($handle))) {
                if ($file != "." && $file != "..") {
                    if (GetFileExtention($path . strtolower($file)) =="XML") {
                        $filename = $file;      
                    }
                }
            }
            closedir($handle);
        }

        return $filename;

}

稍后在代码中调用产生NO XML错误的函数。我已经确认下面的$ config ['xml_dir']变量也匹配上面的print_r目录位置。

$cur_xml_file = GetXMLFile($config['xml_dir']);

if ($cur_xml_file == "") {
    echo "NO XML FILE FOUND";
    exit(0);    
}

1 个答案:

答案 0 :(得分:2)

不,最近PHP中没有任何变化会导致您显示的代码停止运行。如果它不再起作用,则错误在其他地方。

然后,再次找到一个文件的代码很多。你为什么不把它改成

function GetXMLFile($path) {
    $all_xml_files = glob("$path/*.{xml,XML}", GLOB_BRACE);
    return !empty($all_xml_files) ? realpath($all_xml_files[0]) : "";
}

这将返回给定$path中带有.XML或.xml扩展名的第一个文件的绝对路径,如果没有找到文件或发生错误,则返回空字符串。

当您将其更改为该错误时,查看错误是否消失。