【问题标题】:PHP 'exec' command doesn't properly work with 'awk' commandPHP 'exec' 命令不能与 'awk' 命令一起正常工作
【发布时间】:2018-07-31 14:49:01
【问题描述】:

我正在使用以下 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_FILE.log - 777 执行 PHP 代码的文件 - 664 访问日志 - 640 forensic_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 命令之前,awk 变量“$0”、“$1”和“$2”是否被 PHP 替换?
  • 尝试使用 exec 函数的 $output$return_var 值来调试:string exec ( string $command [, array &amp;$output [, int &amp;$return_var ]] )。 (您也可以简单地将 exec 替换为 echo 以确认 PHP 不会弄乱命令文本。)
  • 为方便起见,您可以先尝试调试 AWK 命令以确保它产生非空输出: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", $output, $return_var);
  • 我试图简化代码,但命令的输出似乎是空白:$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; - 此命令不回显任何内容。
  • @AndriyMakukha 我已经按照你的建议用简化的代码更新了描述,它没有任何回应,你有什么建议吗?

标签: php linux awk exec


【解决方案1】:

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

感谢大家的建议。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-06
    • 2018-10-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多