PHP readdir to find xml


PHP readdir to find 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);    
}

不,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扩展名,如果未找到文件或发生错误,则返回空字符串。

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