2013-07-25 51 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

這將解決特定的錯誤。我沒有更多的細節來幫助您排除文件爲空的原因。也許你應該發佈一個新的問題,並提供更多的細節。 :) –

相關問題