簡體   English   中英

PHP的“ exec”命令不能與“ awk”命令一起正常使用

[英]PHP 'exec' command doesn't properly work with 'awk' command

我正在使用以下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 access.log-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”命令無關,對此感到抱歉。 問題在於Apache日志文件的權限,一旦我修復它,原始代碼就會開始產生預期的輸出。

感謝大家的建議。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM