我有一個PHP腳本從XML文件讀取生成一個表。它所做的第一件事是檢查以確保文件存在。什麼會導致Web服務器找不到XML文件?
$path = getcwd();
if(file_exists($path.'\inc\php\kbs.xml')){
$kbs = simplexml_load_file($path.'\inc\php\kbs.xml');
} else {
echo "Error: No KB file found";
}
由於某種原因,間歇性地,它沒有找到該文件。我已經嘗試刪除file_exists
全部檢查(因爲我知道文件確實存在),但它仍然不會有時加載文件。我可以刷新頁面,並在7次中有7次不加載,但有時會加載。
我在開發過程中從未遇到過這個問題,但是一旦它發生了生產(現在可能被200個用戶使用),它就開始發生了。
我該如何解決這個問題? (PHP 5.2.14運行在IIS)
編輯:錯誤日誌給我以下消息失敗時:
Notice: Undefined variable: kbs in <the path> on line 16
Notice: Trying to get property of non-object in <the path> on line 16
Warning: Invalid argument supplied for foreach() in <the path> on line 16
線16是第一次的可變$kbs
被訪問。如果找不到該文件,則顯然$kbs
未設置。
這樣的問題總是很棘手,令人難以置信,有時候工作,有時候不行。請按照@xdazz建議的方式嘗試使用絕對路徑 – Abhay 2012-01-29 06:50:05
我幾乎希望它完全不起作用,而不是間歇性地執行:P – sicks 2012-01-29 06:57:58
當然,錯誤意味着$ kbs未設置,但您的腳本是否也輸出「錯誤:找不到KB文件」?如果是,那麼肯定file_exists()返回false。如果不是,則表示XML文件存在。並且現在不要將$ path設置爲getcwd();而是嘗試給你的XML文件提供完整的「絕對路徑」。 – Abhay 2012-01-29 07:26:57