Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/230.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从PHP触发awstats更新_Php_Awstats - Fatal编程技术网

从PHP触发awstats更新

从PHP触发awstats更新,php,awstats,Php,Awstats,我试图从PHP脚本内部触发AWStats的更新 我目前使用cron作业触发更新,并简单地将命令行复制到脚本中的exec函数中 if(exec("/path/to/awstats.pl -config=domain.com -update")) { echo 'Logs processed'; } 但是,这返回一个假阳性。尽管显示了“Logs processed”(已处理日志)行,但AWStats尚未处理统计信息 当直接访问AWStats时,它确实工作得非常好,当通过cron作业运行更新

我试图从PHP脚本内部触发AWStats的更新

我目前使用cron作业触发更新,并简单地将命令行复制到脚本中的
exec
函数中

if(exec("/path/to/awstats.pl -config=domain.com -update")) {
    echo 'Logs processed';
}
但是,这返回一个假阳性。尽管显示了“Logs processed”(已处理日志)行,但AWStats尚未处理统计信息

当直接访问AWStats时,它确实工作得非常好,当通过cron作业运行更新时,它不是来自这个PHP脚本。我已经检查了错误日志,我的脚本或AWStats超时没有问题

我错过什么了吗


对于记录,此脚本旨在清除旧数据,更新引用者黑名单以阻止垃圾邮件,然后从日志文件重新编译统计数据。是的,我知道使用SkipPreferreBlacklist指令的性能问题。

从您的代码中可以看出,
exec
返回一个布尔值,指示成功或失败。不需要,它只返回一个字符串(命令输出的最后一行)。字符串(除了
“0”
和空字符串)的计算结果始终为true

要调试此问题,应打印命令的输出:

exec("/path/to/awstats.pl -config=domain.com -update", $output);
echo join(PHP_EOL, $output);

cronjob是否与PHP脚本以相同的用户身份运行?@aross啊,这是在共享托管服务器上。我相信是这样,但我不确定。尝试手动将某些内容附加到脚本写入的文件中。当然是从PHP脚本。这可能只是一种许可issue@aross我将PHP脚本作为cron作业执行,结果是一样的。该脚本也会将数据附加到文件中(这是它的目的),而且效果很好。谢谢,@aross。是的,我没有正确思考,我确实假设了一个布尔型的反应。我还认为PHP脚本没有被授权运行
.pl
文件,并且输出是一个数组。通过创建脚本可以运行的
.cgi
文件,我找到了一个解决方案。