2010-11-06 128 views
1

我想增加我工作的一個php項目的管理功能。截至目前,該項目將把所有錯誤記錄到系統日誌中。我試圖給管理員頁面讀取這些錯誤的系統日誌的能力。在終端,我可以鍵入:使用PHP讀取系統日誌

cat /var/log/syslog | grep projectName 

然而以往,如果我嘗試使用運行此命令:

$output=shell_exec('cat /var/log/syslog | grep projectName'); 

或:

$output=`cat /var/log/syslog | grep projectName`; 

$輸出始終出現爲空。有什麼辦法可以做到這一點?這是甚至是最好的方式(IE瀏覽器有PHP本地方式來讀取系統日誌)?

編輯: 看來問題是一個權限之一。我可以給www-data權限來訪問syslog,但由於某種原因,這對我來說似乎不是個好主意。有沒有本地的方式來閱讀日誌?

+1

不要把這看作是顯而易見的,而是使用根擁有的系統日誌,也包括系統其他部分的其他日誌數據,爲什麼不讓項目擁有自己的日誌文件,由它擁有,沒有額外的噪音? – Fanis 2010-11-07 13:07:09

+0

^這正是我最終做的。 – CountMurphy 2010-11-24 22:17:14

回答

-1

我最終創建了一個完全獨立的日誌文件。這照顧了所有的權限問題

+0

downvote的任何理由?這是我通過這個問題的方式。 – CountMurphy 2017-12-06 15:48:07

1

難道你不能打開/ var/log/syslog你的自己在PHP而不是做一個shell命令?

+0

剛試過。現在我知道爲什麼它以前沒有工作:警告:fopen(/ var/log/syslog):未能打開流:權限被拒絕 – CountMurphy 2010-11-06 21:02:44

+0

您可以chmod syslog,以便www用戶可以讀取它。否則,即使做命令行也不行。 – 2010-11-06 21:05:19

+0

我可以很容易地做到這一點,但這樣做會不會有安全問題? – CountMurphy 2010-11-06 21:06:00

-1

有沒有聽說過sudo?如果您擔心安全問題,這可能是您的最佳選擇。但我認爲去sudo路線太複雜了,只是給web用戶一個閱讀權限,這不是一個寫入讀取准許。爲了成爲一個安全音樂會,必須有一種方法讓其他人編寫一個讀取syslog文件的php腳本。如果你是唯一一個可以上傳php腳本到你的服務器的人,那麼你根本就不應該擔心。對於共享主機,這是一個問題,因爲任何人現在都可以讀取服務器的系統日誌。

+1

我不認爲sudo是他的解決方案。你不能sudo並在php中輸入密碼。他要在哪裏存儲root密碼?在PHP中? :) – 2010-11-06 21:17:41

+1

即使我沒有在php文件中存儲sudo密碼,www-data不在管理員組中,我也不打算將它放在那裏 – CountMurphy 2010-11-06 21:20:27

+0

儘管我同意sudo可能不是最佳選擇,這不是因爲你必須輸入密碼。你不只是設置sudoers,然後不需要密碼? – MJB 2010-11-06 21:40:29