我正在尝试从一个PHP脚本内部触发AWStats的更新。
我目前使用cron作业来触发更新,并简单地将命令行复制到脚本中的exec函数中。
if(exec("/path/to/awstats.pl -config=domain.com -update")) {
echo 'Logs processed';
}但是,这会返回一个假阳性。尽管显示了"Logs processed“行,但AWStats尚未处理统计信息。
当直接访问AWStats时,它确实工作得很好,并且当通过cron作业运行更新时,它不是来自这个PHP脚本。我已经检查了错误日志,我的脚本或AWStats超时没有问题。
我是不是遗漏了什么?
对于记录,此脚本旨在清除旧数据,更新引用黑名单以阻止垃圾邮件,然后重新编译日志文件中的统计数据。是的,我知道使用SkipReferrerBlackList指令的性能问题。
发布于 2017-02-28 18:56:27
从您的代码中可以看出,您认为exec返回了一个表示成功或失败的布尔值。它不是这样的,它只是返回一个字符串(命令输出的最后一行)。字符串( "0"和空字符串除外)的计算结果始终为true。
要调试该问题,应打印命令的输出:
exec("/path/to/awstats.pl -config=domain.com -update", $output);
echo join(PHP_EOL, $output);https://stackoverflow.com/questions/42506422
复制相似问题