2013-07-25 38 views
0

我刚开始在我的PHP脚本中实现bash命令前几个工作正常现在我正试图在我的PHP脚本中执行下面的bash命令试图通过我的PHP脚本在我的apache服务器执行一个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 
+0

exec命令我张贴以上 –

回答

1

你要逃避字符串中的双引号:

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"); 
+0

这个工作,但我得到的输出文件2.txt –

+0

无文本,然后你的shell命令是错误的,但是在PHP一切是正确的。 – bwoebi

+0

嗯这个shell命令在bash中使用时才起作用只是改变了我的名字是把$ filname变量放在任何机会你可以在这个 –

0

错误是因为您尚未在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"); 
+0

那种工作只有问题是它创建2.txt文件,但什么都没有在里面什么都没有 –

+0

@AdiHelio它会在命令执行开始时创建文件,如果没有什么可写的,它不会被删除。 – bwoebi

+0

这将解决特定的错误。我没有更多的细节来帮助您排除文件为空的原因。也许你应该发布一个新的问题,并提供更多的细节。 :) –

相关问题