2016-03-04 36 views
1

我正在管道apache日志到php文件,以便将后来的日志写入数据库。PHP STDIN没有从管道apache日志中获取内容

在虚拟主机

我也行:
ErrorLog "|/usr/bin/php /opt/waffy/log2db.php"

在PHP我有:

$stdin = fopen ('php://stdin', 'r'); 
ob_implicit_flush (true); // Use unbuffered output 
$data = ""; 
while ($line = fgets ($stdin)) 
{ 
    $data .= $line; 
} 
file_put_contents("/opt/waffy/log.log",$data); 

PHP的调用,但该文件/opt/waffy/log.log是空的。

UPDATE1

我想我有一点进步时,我做了 chmod +X log2db.php什么hapend,但是当我更换Xx我停下来获得ERR_CONNECTION_REFUSED

但不创建文件/opt/waffy/log.log ...

回答

1

脚本不匹配的期望是什么对于Apache日志的管道脚本那么究竟什么是产量可能不确定。一个最小的PHP的例子是:

#!/usr/bin/php 

<?php 
$stdin = fopen ('php://stdin', 'r'); 
ob_implicit_flush (true); // Use unbuffered output 
while ($line = fgets ($stdin)) 
{ 
    print $line; 
} 

Apache中的以下enty

ErrorLog "|/var/www/log.php >>/var/www/log.log" 

不要忘了给log.php正确的权限

chmod +x log.php 

Apache需要的权限写入我的示例中的/ var/www /目录。

请参阅http://www.sudleyplace.com/pipederrorlogs.html了解更多详情。首先让它工作,以便它输出接收到的所有内容,然后修改数据并添加功能。

重要

你必须通过

/etc/init.d/apache2 restart 
/etc/init.d/apache2 start 

通过

service apache2 start 
service apache2 restart 
+0

把这个'错误日志启动Apache“| /opt/waffy/log2db.php> > /opt/waffy/out.log“ '在我的虚拟主机中,当访问页面时导致'ERR_CONNECTION_REFUSED',前夕ñ虽然'configtest'确定了....谢谢。我认为每次'>>'都在我的虚拟主机中... – SexyMF

+0

@SexyMF我测试过它对我来说工作正常。你改变了你的脚本并添加了#!/ usr/bin/php这行,并且看到了正确的权限 – Kordi

+0

是的,除了我的php在#!/ usr/bin/php5(ubuntu) – SexyMF

相关问题