2010-11-06 3 views
1

Я пытаюсь увеличить функциональность администратора проекта php, над которым я работаю. На данный момент проект будет записывать все свои ошибки в syslog. Я пытаюсь дать странице администратора возможность прочитать syslog для этих ошибок. в терминале можно ввести:Использование PHP для чтения syslog

cat /var/log/syslog | grep projectName 

Однако когда-либо, если я пытаюсь запустить эту команду:

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

или:

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

$ выход всегда приходит как пустые. Есть ли способ, которым я могу это сделать? Это даже лучший способ (у IE есть ли у php собственный способ прочитать syslog)?

EDIT: похоже, что проблема является разрешающей. Я могу предоставить разрешение на www-data для доступа к syslog, но по какой-то причине это не кажется мне хорошей идеей. Нет ли обычного способа чтения журнала?

+1

Не считайте это очевидным, но вместо использования корневого syslog, который также включает другие данные журнала из остальной системы, почему бы не получить проект собственного журнала файл, принадлежащий ему, и без дополнительного шума? – Fanis

+0

^Именно это я и сделал. – CountMurphy

ответ

-1

В результате я создал совершенно отдельный файл журнала. Это позаботилось обо всех разрешениях.

+0

Любая причина для downvote? Так я и преодолел проблему. – CountMurphy

1

Не можете ли вы открыть/var/log/syslog самостоятельно в php вместо выполнения команды оболочки?

+0

Просто попробовал. Теперь я знаю, почему это не сработало раньше: Предупреждение: fopen (/ var/log/syslog): не удалось открыть поток: Permission denied – CountMurphy

+0

Вы можете chmod syslog, чтобы пользователь www мог его прочитать. В противном случае даже выполнение командной строки не будет работать. –

+0

Я мог бы легко сделать это, но будут ли в этом проблемы безопасности? – CountMurphy

-1

Вы когда-нибудь слышали о sudo? Это может быть вашим лучшим выбором, если вы заинтересованы в безопасности. Но я думаю, что переход на sudo-маршрут слишком сложный, просто дайте читателю возможность пропустить веб-пользователя, это не письмо для чтения. Для того, чтобы это был концерт безопасности, должен быть способ для кого-то другого написать сценарий php, который читает файл syslog. Если вы единственный, кто может загружать скрипты php на ваш сервер, вам не стоит об этом беспокоиться. Для общего хостинга это проблема, причина, так как теперь кто-то сможет прочитать syslog сервера.

+1

Я не думаю, что это его решение. Вы не можете sudo и введите пароль в php. Где он собирается хранить пароль root? В PHP? :) –

+1

, даже если я сохранил пароль sudo в php-файле, www-data не входит в группу admin, и я не собираюсь его размещать – CountMurphy

+0

Хотя я согласен, что sudo может и не быть способом, это не потому, что вам нужно будет ввести пароль. Не могли бы вы просто настроить sudoers, а затем не требовать пароль? – MJB

Смежные вопросы