我的下載腳本中有一個間歇性錯誤,我無法用try/catch或以任何可靠性重現。我的500內部錯誤頁面在渲染時會記錄到我的系統中,它發生了。這裏是代碼塊,似乎在拋出錯誤(如下面的日誌所示)。如何記錄未被try/catch語句捕獲的間歇性錯誤?
$logger->addDebug("User downloading widget", $dl);
header('Content-Description: File Transfer');
header('Content-type: application/octet-stream');
header('Content-length: '.filesize($dl['url']));
header('Content-Disposition: attachment; filename="'.str_replace('"', '_', $dl['name']).'"');
readfile($dl['url']);
exit();
的try/catch
塊被圍繞它纏繞:
} catch (Exception $e) {
$logger->addCritical('DOWNLOAD ERROR ENCOUNTERED', array (
errorMessage => $e->getMessage()
));
我的日誌示出了以下內容。注意第二個日誌是從我的500.php中獲得的日誌,並不是那裏的catch塊中的日誌。
[2015-09-27 13:21:15] Site DEBUG: User downloading widget { ... }
[2015-09-27 13:21:16] Site CRITICAL: 500 INTERNAL SERVER ERROR { ... }
的Apache/PHP配置爲登錄錯誤爲好,但也有那些匹配任何事件日誌中沒有相關的錯誤。
$dl['url']
是存在於磁盤上的有效文件位置。 $dl['name']
是嚴格控制的文件名值,僅存在字母數字(替換僅僅是一種安全措施)。在瀏覽器中使用確切的URL(以及情況可以打到這個代碼塊),我不會收到錯誤。
我已經把它包裝在一個try/catch塊中,它只是試圖記錄錯誤,但沒有從它那裏得到任何日誌結果,即使我仍然得到500錯誤日誌。所以現在我想我需要一個更通用的方法來獲得這個錯誤。 在500錯誤頁面(如.htaccess中設置)有沒有辦法獲取觸發頁面的服務器錯誤?或者,還有一個原因,爲什麼一個try/catch塊(它只是記錄錯誤)不起作用?
添加如何配置錯誤日誌記錄到您的問題,請。 –
那麼你是否解決了你的問題?您尚未顯示錯誤日誌記錄配置。 –