2016-02-27 124 views
1

我繼承了一段突然停止工作的代碼。我將代碼隔離到它看起來這個函數不再讀取該目錄並找到它中找到的xml文件供以後處理。我已經上傳了帶有大小寫.xml/.XML擴展名的xml文件的版本,結果相同:NO XML FILE FOUNDPHP readdir找到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);  
} 
+2

「GetFileExtention」返回什麼?你確定它返回XML而不是'xml'嗎? –

+1

有一個'GetFileExtention()'函數是可疑的,該函數需要一個全小寫的文件名並返回一個大寫的擴展名。不管怎樣,即使你不懂代碼或者安裝了調試器,你也應該可以用簡單的'var_dump()'語句來追蹤事物的內容。 –

回答

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擴展或發生了錯誤。

查看當您將其更改爲該錯誤時是否消失。