试图通过php脚本在apache服务器中执行bash命令,但出现错误


trying to execute a bash command in my apache server through my php script but getting error

我刚刚开始在我的php脚本中执行bash命令,前几个操作很好,现在我正在尝试在我的php脚本中执行以下bash命令

exec("awk -F: '{printf "www.example.com/2/tks.php?account=%s%%3A%s'n" ,$1, $2 }' < /opt/lampp/htdocs/$filename > /opt/lampp/htdocs/2.txt");

我从php脚本中得到的错误是,在我把它放进去之前,这个脚本运行得很好

Parse error: syntax error, unexpected 'www' (T_STRING) in /opt/lampp/htdocs/index.php on line 54

您必须转义字符串中的双引号:

exec("awk -F: '{printf '"www.example.com/2/tasks.php?account=%s%%3A%s''n'" ,$1, $2 }' < /opt/lampp/htdocs/$filename > /opt/lampp/htdocs/2.txt");

错误是因为您没有在exec语句中转义printf语句的双引号。

在当前状态下,PHP将"awk -F: '{printf "视为字符串的第一部分,因为它们用双引号括起来。要告诉PHP忽略其他引号,可以使用反斜杠。

更改为:

exec("awk -F: '{printf '"www.example.com/2/tks.php?account=%s%%3A%s'n'" ,$1, $2 }' < /opt/lampp/htdocs/$filename > /opt/lampp/htdocs/2.txt");