2016-03-04 34 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

相關問題