我继承了一段突然停止工作的代码。我已经将代码隔离到它,看起来这个函数不再读取目录并找到在其中找到的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);
}
答案 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扩展名的第一个文件的绝对路径,如果没有找到文件或发生错误,则返回空字符串。
当您将其更改为该错误时,查看错误是否消失。