PHP的mkdir函數只返回true和false。問題是它何時返回false。如何找到mkdir從PHP失敗的原因?
如果我在啓用錯誤報告的情況下運行,我會在屏幕上看到錯誤消息。我也可以在Apache日誌中看到錯誤消息。但是我想抓取信息的文本,並用它做一些其他的事情(例如通過IM發送給我自己)。我如何獲取錯誤文本?
更新:繼艾曼的想法,我來到了這一點:
function error_handler($errno, $errstr) {
global $last_error;
$last_error = $errstr;
}
set_error_handler('error_handler');
if (!mkdir('/somedir'))
echo "MKDIR failed, reason: $last_error\n";
restore_error_handler();
不過,我並不因爲它使用全局變量喜歡它。任何想法更清潔的解決方案?
Soulmerge的回答是一個更好的選擇因爲它會告訴你有關錯誤而無需更換處理程序。 – 2009-05-30 10:30:54
請注意,錯誤處理程序存儲在PHP的堆棧中,這意味着對restore_error_handler()的調用將恢復以前的錯誤處理程序,無論是內置處理程序還是其他自定義處理程序。所以暫時用set_error_handler()替換錯誤處理程序是沒有任何損失的。 – soulmerge 2009-05-30 11:35:09