[英]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為空。
添加簡化代碼:
<?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.