當我的網站出錯時,我正試圖獲得有關生產的更多資訊。場景是這樣的:
我們與 stripe 和 stripe webhooks 集成以執行某些呼叫。當條帶功能失敗時,我們沒有任何資訊來了解生產服務器上出了什么問題。當前條帶回傳這種錯誤:

這肯定是沒有幫助的,但我希望prod.log檔案中的var/log/prod.log檔案會有資訊。我看了一下,它是空的(不理想 - 現在我們根本不知道問題是什么)。
我monolog.yaml的生產檔案如下:
monolog:
handlers:
filter_for_errors:
type: fingers_crossed
# if *one* log is error or higher, pass *all* to file_log
action_level: error
handler: file_log
# now passed *all* logs, but only if one log is error or higher
file_log:
type: stream
path: "%kernel.logs_dir%/%kernel.environment%.log"
# still passed *all* logs, and still only logs error or higher
syslog_handler:
type: syslog
level: error
這是標準的,直接來自檔案,但是,似乎仍然沒有將任何內容寫入該檔案。
我正在檢查該檔案的權限:
-rw-r--r-- 1 deploy www-data 488007 Mar 2 19:21 prod.log
這些是正確的權限嗎?
我的 nginx 服務器塊配置是否也需要指向正確的檔案,或者 symfony 是否足夠?
uj5u.com熱心網友回復:
該檔案應該可由擁有網路服務器行程的同一用戶寫入。通常是 www-data,但請檢查您的服務器配置。
通常,下面的所有內容都var應該可以由 Web 服務器行程寫入。
檢查有關Symfony 專案的推薦目錄權限的檔案始終是推薦的做法,以防有疑問。
此外,嘗試在開發和生產中盡可能地復制生產環境。如果您在開發中重現此問題,您可能已啟用display_errorsPHP,您會看到最終原因。
這里發生的情況是,當發生任何觸發寫入日志的事情時,應用程式將遇到致命錯誤,因為它無法寫入日志檔案。因此,即使最初的錯誤是非致命的,甚至是警告或資訊性錯誤,它也會升級為500因為無法寫入應用程式期望的位置,這是一個不可恢復的錯誤。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/438378.html
