我正在将 apache 日志管道到 php 文件,以便稍后将日志插入数据库。
在虚拟主机中,我有以下行:
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
没有什么意外,但是当我用x
替换X
时,我停止了ERR_CONNECTION_REFUSED
。
但是文件/opt/waffy/log.log
未创建...
该脚本与 Apache 管道日志脚本的预期不匹配,因此可能未定义确切的输出内容。一个最小的 PHP 示例是:
#!/usr/bin/php
<?php
$stdin = fopen ('php://stdin', 'r');
ob_implicit_flush (true); // Use unbuffered output
while ($line = fgets ($stdin))
{
print $line;
}
在阿帕奇中具有以下恩蒂
ErrorLog "|/var/www/log.php >>/var/www/log.log"
不要忘记给日志.php正确的权限
chmod +x log.php
在我的示例中,Apache 需要写入目录/var/www/的权限。
有关更多详细信息,请参阅 http://www.sudleyplace.com/pipederrorlogs.html。首先让它工作,这样它就简单地输出它收到的所有内容,然后修改数据并添加功能。
重要
你必须通过以下方式启动 apache
/etc/init.d/apache2 restart
/etc/init.d/apache2 start
而不是通过
service apache2 start
service apache2 restart