我正在将apache日志传递给php文件,以便将稍后日志插入数据库。
在虚拟主机中我有一行:
ErrorLog "|/usr/bin/php /opt/waffy/log2db.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
...
答案 0 :(得分: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中的以下内容
ErrorLog "|/var/www/log.php >>/var/www/log.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