2013-05-30 153 views
1

我想調用一個shell腳本循環使用shell_exec() php功能,但沒有用。從PHP腳本循環不工作

我可以做shell_exec("ls")沒有問題。

我可以SSH服務器,並做for f in ls ; do echo $f ; done沒有問題。

但是,當我將二者結合起來,

shell_exec("for f in `ls` ; do echo $f ; done") 

我什麼也沒得到作爲輸出(也不NULL作爲錯誤,我選中)。

我在這裏錯過了什麼?

P.S:我在這裏使用的for循環不是我打算使用的,它只是爲了使它更清晰。

+0

打開錯誤,並將錯誤報告設置爲E_ALL - 您至少需要注意此處 – zerkms

回答

4
echo shell_exec("for f in `ls` ; do echo \$f ; done"); 

你的錯誤:

  1. 錯過echo
  2. $標誌應爲你使用雙引號儘快逃脫(或雙引號可以用單引號代替代替)

專業提示:永遠發展與error_reporting水平E_ALL(或更高版本)和display_errors 1

+1

它如何選擇要使用的shell? –

+0

@j_mcnally:這實際上是一個有趣的問題。 – zerkms

+0

在內部它使用(對於Linux)'popen',但不知道如果當前用戶沒有任何賦值('/ bin /假') – zerkms