2017-08-07 52 views
0

我的/ public_html/logs文件夾中有一個404.log文件。文件是可寫的,但偶爾會出現錯誤:`無法打開流:權限被拒絕'

當顯示404頁面時,PHP會將信息附加到404.log文件,該文件向我提供有關我的網站以及誰試圖訪問的信息。

由於某種原因,有時我收到錯誤Permission Denied。該文件是可寫的,可執行的,並且每天都會被寫入 - 如果我訪問不存在的頁面,文件被寫入並且我可以在其中看到條目,它可以正常工作。

但是我得到的錯誤被標記出來,因爲權限被拒絕,我認爲這是因爲機器人或某人試圖強行進入我的網站 - 例如 - 我得到的URI;

/static/../../../../../../../../../etc/passwd. /cms/www/loader.php/system/"><iMg /webtrees/modules_v3/googlemap/wt_v3_street_view.php?map="> /sites/all/modules/fckeditor/fckeditor/editor/filemanager/connectors/cfm/connector.cfm?Command=GetFolders&Type=File&CurrentFolder=%2F

所以我的猜測是,該文件已經由同一個腳本開放,但因爲該網站被訪問如此之快它會導致拒絕的權限。有沒有辦法來防止這種情況,或以某種方式異步寫入?

回答

1

首先,你應該看看你的網絡服務器爲你提供的訪問日誌,看看有多少404發生。如果你必須通過PHP來完成,那麼你可以做一些事情。

可能有平行寫入的選項,但我會想象給你一個非常奇怪的文件,其中有很多錯誤混合在一起。

您可能會更改登錄到數據庫而不是文件的方式。顯然,數據庫更適合於同時處理多個請求,並且會爲發生的每個錯誤創建一個新記錄。

或者,您可以實現自己的日誌記錄層,它基本上只是一個im內存隊列,它不斷地嘗試寫入文件,只要它不是空的。這樣你可以緩衝你的日誌。您將不得不考慮保存時間戳,以便在發生某些事情時,以及跟蹤隊列使用的內存量。

林相當肯定有很多圖書館也爲你照顧這個。編寫這些庫的人也遇到了這些問題,併爲他們創建了共同的解決方案,以便您現在不必擔心。

+0

你說得對,我將從現在開始使用access_log文件。 – Chud37

相關問題