簡體   English   中英

使用root:root而不是webapp:webapp創建的Laravel日志文件

[英]Laravel log file created with root:root instead of webapp:webapp

在我的應用程序中,我使用laravel.log文件,該文件每天在世界標准時間00:00創建。 但是,有時該文件是使用root:root用戶/組而不是通常的webapp:webapp(apache用戶)創建的。 這會使我的應用程序崩潰,因為該應用程序無法再對其進行寫入。 我注意到文件寫入了一段時間(幾分鍾后)后,文件所有權可能會發生變化。

  1. 創建文件后,可能導致文件所有權更改的原因是什么?
  2. Laravel中有沒有一種方法可以嘗試/捕獲日志記錄,以使應用程序不會由於文件寫入錯誤而崩潰?

存儲目錄和文件的權限不是問題,因為它已經運行了很長時間了。 只是laravel.log文件的所有權偶爾更改而無需干預。

您應該使用php_sapi_name()而不是get_current_user()。 正如傑森(Jason)對您嘗試的相同答案的評論中所述。

請注意,get_current_user()返回當前PHP腳本的所有者(根據php.net),而不是當前正在運行該腳本的用戶。 我改用php_sapi_name(),它給出了將以不同用戶身份運行的php處理程序的名稱(例如,apache或cli)。

這樣,您將為Web服務器和命令行獲取2個單獨的日志(包括隊列偵聽器)。

這里找到解決方案。

他的解決方案使我意識到問題出在我的隊列偵聽器上。 在極少數情況下,當我的Web應用程序有機會在午夜UTC之后(幾分鍾內)旋轉日志文件之前,我的隊列偵聽器啟動時,該文件將以root所有者的身份創建。

我修改了日志文件名以包括當前用戶,從而隔離了每個用戶的日志,避免了任何權限問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM