2016-02-03 85 views
2

我正在使用Laravel 5.1,Log設置爲每天生成。登錄Laravel 5.1的文件許可

我大量使用喬布斯。 Web服務器是Apache,因此PHP以apache用戶身份執行,因此在一天結束時,apache用戶會生成一個新的日誌文件,並且文件權限爲0644。我有通過由Apache用戶運行的Supervisor配置的工作人員。 (到目前爲止很好)

現在對於隊列中的隨機尖峯,我有一個腳本設置來運行更多的工人(消費者的隊列)。我面臨的問題是,由於日誌文件是以0644權限生成的,所以其他用戶沒有文件寫入權限。

幾個解決方案我能想到的是 -

    root用戶
  • 啓動工作(不能做,因爲我沒有權限)
  • 一個cron 00文件權限更改爲0646 :每天00:00(也需要root)
  • 由當前用戶在00:00:00手動生成日誌文件,以便我有權將權限更改爲0646(不可靠,如果apache創建它首先)
  • 在Unix SE網站啓動工作作爲apache用戶(因爲沒有根,所以這是不可能的)
  • This Question

所以我的問題是什麼是做到這一點的最佳方式,它看起來像一個普遍問題對我來說,任何開發者都可能面對。或者除了上面提到的方法之外,還有沒有更好的方法來做到這一點。

+0

你不能使用supervisor api來啓動worker,所以它也可以作爲'apache'運行嗎? – ZeissS

+0

我必須偶爾運行工作,再加上任何與主管相關的操作都需要sudo(如果我在這裏錯了,請糾正我) –

+0

'/ etc/crontab /'有一個字段'',它可以啓動該用戶的cron – Junaid

回答

0

[..]其他用戶沒有寫入文件權限。

您確定要讓這些用戶直接訪問該文件嗎?你可以添加一個API到你的laravel應用程序來提供這個文件(甚至只有一些過濾的數據)。這也可以讓你在你的應用程序中也有更細粒度的訪問控制等。

+0

這是一個有效的觀點,我想這隻會將我的選項限制爲第四個選項。我的問題是我需要其他用戶的寫權限,我可能想從中運行worker。 –

+0

如果它的日誌文件,只有一個應用程序應該寫入它 - 你的laravel應用程序。讓工作人員或其他人員使用API​​或擁有自己的日誌文件。 – ZeissS