2010-06-28 91 views
2

我有一個命令行應用程序,需要從我的PHP Web應用程序執行。說的命令如下:基於某些條件PHP:執行提示用戶的命令行應用程序

foo -arg1 -arg2 -arg3 

,命令行應用程序會提示用戶按下回車鍵(例如「請按下輸入以繼續。」)。

在我的PHP應用程序中,如何執行命令行併發送回車鍵作爲對提示的響應?

我正在開發WAMP。生產代碼是LAMP。

+0

有時CLI程序有一個批處理模式選項,告訴他們不要問問題,如果其中一個選項可用,您應該使用它。如果它是你自己的程序,你可以考慮添加一個選項。 – 2010-06-28 22:59:27

回答

2

這就是'是'計劃的目的。它將無窮無盡的'y \ n'(或者通過參數告訴它的任何內容)轉儲到程序中。它是爲此目的而存在的(對「是否要繼續」提示回答「是」)。

shell_exec('yes | foo -arg1 -arg2 -arg3') 
+0

看起來OP的開發環境是Windows。我認爲'是'只是* nix ... – grossvogel 2010-06-28 23:00:11

-2

你試過echo "\n" > foo -arg1 -arg2 -arg3

+0

不,我沒有。如何從Web應用程序執行這樣的命令,以便知道我正在嘗試運行命令行?我通常使用exec()。你有echo(),它向瀏覽器顯示輸出。 – StackOverflowNewbie 2010-06-28 22:09:24

+0

不,這可能是'shell_exec('echo'\ n「> ...')',爲了簡潔起見,我省略了php exec代碼。我認爲它需要'shell_exec('foo -arg1 ... | echo'\ n「')'儘管想到它。 – Kris 2010-06-28 22:14:43

+0

它應該是'echo'\ n「| foo ...' – 2010-06-28 22:53:33

1

您將確實需要o pen a process handle並解析程序輸出並寫入適當的輸出作爲響應。

查看expect擴展雖然,這可以使這種事情更容易。

1
$value = fgets(STDIN); 

這將允許用戶在一個值,你可以然後通過$值訪問進入。

+0

從這個問題看來,php腳本似乎沒有從命令行運行... – grossvogel 2010-06-28 22:54:03