从php访问/ var / log文件

时间:2013-05-31 19:10:06

标签: php root syslog

我想用PHP在网页上显示一些syslog信息来远程监控我的家庭linux盒子。 即从/var/log/daemon.log

中用grep过滤的一些东西
<?php
  $output = `grep ddclient /var/log/daemon.log`;
  echo "<pre>$output</pre>";
?> 

现在文件/var/log/daemon.log由root拥有,PHP用户(www-data)无法访问。 显然,上面的内容会返回空白。

解决方案是什么?

谢谢, 格特

2 个答案:

答案 0 :(得分:2)

这是Puggan Se的setuid解决方案的变体,但恕我直言更好。

创建一个grep_ddclient.sh shell脚本,其中包含:

#!/bin/sh
grep ddclient /var/log/daemon.log

然后将以下内容添加到/etc/sudoers

apache ALL=NOPASSWD: /path/to/grep_ddclient.sh

然后从PHP运行sudo /path/to/grep_ddclient.sh

答案 1 :(得分:1)

替代1:   更改文件/var/log/daemon.log的读访问权限,以便apache可以读取它。

替补2:   将grep ddclient /var/log/daemon.log放入shell文件中,然后激活它上面的SETUID标志,并给apache执行它的权利

chown root:apache grep_ddclient.sh
chmod 550 grep_ddclient.sh
chmod +s grep_ddclient.sh

然后从php

运行grep_ddclient.sh