它与日志文件进行比较,如果日志 ID 匹配则连接内容并将其输出到 LOG_FILE.log。因此-6ren">
gpt4 book ai didi

PHP 'exec' 命令不能与 'awk' 命令一起正常工作

转载 作者:太空宇宙 更新时间:2023-11-04 12:03:15 24 4
gpt4 key购买 nike

我正在使用以下 php 代码:

<?php 
exec ("awk -F'|' -vOFS='|' '(NR==FNR){a[$1]=$0; next}{if(a[$1]){print $2,a[$1]}}' /var/log/apache2/forensic_log.log /var/log/apache2/access.log | cut -d'|' -f1,3- > i/content/other/LOG_FILE.log");
?>

它与日志文件进行比较,如果日志 ID 匹配则连接内容并将其输出到 LOG_FILE.log。因此,我应该在 LOG_FILE.log 中有类似的内容

[14/May/2018:06:37:07 +0300]|HEAD /favicon.ico HTTP/1.0|Host:host.com|Connection:close

这段代码在很长一段时间内都运行良好,但现在它似乎在某个地方失败了,因为 LOG_FILE.log 是空白的。

  1. 我检查了脚本中提到的路径 - 它们是正确的。
  2. 尝试使用两个日志文件在本地编写脚本 - 它可以正常工作并向 LOG_FILE.log 生成预期的输出
  3. 问题似乎是在我们将 apache2 更新为“Apache/2.4.34”时出现的
  4. 为文件添加权限:日志文件.log - 777执行 PHP 代码的文件 - 664访问日志 - 640forensic_log.log - 640

添加简化代码:

<?php
$output=exec("awk -F'|' -vOFS='|' '(NR==FNR){a[$1]=$0; next}{if(a[$1]){print $2,a[$1]}}' /var/log/apache2/forensic_log.log /var/log/apache2/access.log");
echo $output;
?>

此代码不回显任何内容。

对于这么乱的问题,我很抱歉,但我不是代码的作者,也不熟悉 PHP,但我仍然必须以某种方式处理这个问题。

最佳答案

我终于找到问题的原因并解决了。该问题与“awk”命令无关,对此深感抱歉。问题出在 apache 日志文件的权限上,一旦我修复了它,原始代码就开始产生预期的输出。

感谢大家的建议。

关于PHP 'exec' 命令不能与 'awk' 命令一起正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51616228/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com