Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用PHP读取系统日志_Php_Linux_Syslog - Fatal编程技术网

使用PHP读取系统日志

使用PHP读取系统日志,php,linux,syslog,Php,Linux,Syslog,我正在尝试增加一个php项目的管理功能。到目前为止,项目将把所有错误记录到系统日志中。我试图让管理员页面能够读取这些错误的系统日志。在终端中,我可以键入: cat /var/log/syslog | grep projectName 但是,如果我尝试使用以下命令运行此命令: $output=shell_exec('cat /var/log/syslog | grep projectName'); 或与: $output=`cat /var/log/syslog | grep projectN

我正在尝试增加一个php项目的管理功能。到目前为止,项目将把所有错误记录到系统日志中。我试图让管理员页面能够读取这些错误的系统日志。在终端中,我可以键入:

cat /var/log/syslog | grep projectName
但是,如果我尝试使用以下命令运行此命令:

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

$output=`cat /var/log/syslog | grep projectName`;
$output总是显示为空。我有办法做到这一点吗?这是最好的方法吗(即php是否有读取系统日志的本机方法)

编辑:
这似乎是一个权限问题。我可以授予www数据访问系统日志的权限,但出于某种原因,这对我来说似乎不是一个好主意。没有本机方式读取日志吗?

您不能在php中自己打开/var/log/syslog而不是执行shell命令吗

听说过sudo吗?如果你关心安全,这可能是你最好的选择。但我认为走sudo路线太复杂了,只需给web用户一个读前置任务,而不是写一读前置任务。为了让这成为一场安全音乐会,必须有其他人编写读取syslog文件的php脚本的方法。如果您是唯一一个可以将php脚本上传到服务器的人,那么您根本不应该担心这一点。对于共享主机,这是一个问题,因为现在任何人都可以读取服务器的系统日志。

我最终创建了一个完全独立的日志文件。这解决了所有权限问题

只是尝试了一下。现在我知道为什么它以前不工作了:警告:fopen(/var/log/syslog):无法打开流:权限被拒绝您可以修改syslog以便www用户可以读取它。否则,即使使用命令行也不行。我可以很容易地做到这一点,但这样做会不会有任何安全问题?比以root用户身份运行apache更安全。:)我想我要做一个cron作业,将系统日志复制到一个安全的位置,然后让我的php站点解析它。我不认为sudo是他的解决方案。您不能在php中执行sudo并输入密码。他将在哪里存储根密码?在PHP中?:)即使我将sudo密码存储在php文件中,www数据也不在admin组中,我也不打算将其放在那里。虽然我同意sudo可能不是解决问题的方法,但这并不是因为您必须输入密码。您不需要在sudo中输入密码吗?您不需要在sudo中输入密码,这有一个特定的选项,基本上您可以在/etc/sudoers中配置它,以允许特定用户(www或运行apache的任何用户)执行一个特定脚本(脚本的完整路径),同时假定根用户的身份(就这一次)您可以在线查找所有sudo选项,其中一个选项是'nopasswd',不要认为这是显而易见的,但与其使用root拥有的系统日志,其中还包括来自系统其余部分的其他日志数据,为什么不让项目拥有它自己的日志文件,由它拥有,并且没有额外的噪音?^这正是我想要的我在做什么?有没有理由投反对票?这就是我通过这个问题的原因。