我继承了一段突然停止工作的代码。 我已经隔离了代码,似乎此函数不再读取目录并找到在其中找到的 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扩展名,如果未找到文件或发生错误,则返回空字符串。
查看当您将其更改为该错误时,错误是否消失。