我有一個命令行應用程序,需要從我的PHP Web應用程序執行。說的命令如下:基於某些條件PHP:執行提示用戶的命令行應用程序
foo -arg1 -arg2 -arg3
,命令行應用程序會提示用戶按下回車鍵(例如「請按下輸入以繼續。」)。
在我的PHP應用程序中,如何執行命令行併發送回車鍵作爲對提示的響應?
我正在開發WAMP。生產代碼是LAMP。
我有一個命令行應用程序,需要從我的PHP Web應用程序執行。說的命令如下:基於某些條件PHP:執行提示用戶的命令行應用程序
foo -arg1 -arg2 -arg3
,命令行應用程序會提示用戶按下回車鍵(例如「請按下輸入以繼續。」)。
在我的PHP應用程序中,如何執行命令行併發送回車鍵作爲對提示的響應?
我正在開發WAMP。生產代碼是LAMP。
這就是'是'計劃的目的。它將無窮無盡的'y \ n'(或者通過參數告訴它的任何內容)轉儲到程序中。它是爲此目的而存在的(對「是否要繼續」提示回答「是」)。
shell_exec('yes | foo -arg1 -arg2 -arg3')
看起來OP的開發環境是Windows。我認爲'是'只是* nix ... – grossvogel 2010-06-28 23:00:11
你試過echo "\n" > foo -arg1 -arg2 -arg3
?
不,我沒有。如何從Web應用程序執行這樣的命令,以便知道我正在嘗試運行命令行?我通常使用exec()。你有echo(),它向瀏覽器顯示輸出。 – StackOverflowNewbie 2010-06-28 22:09:24
不,這可能是'shell_exec('echo'\ n「> ...')',爲了簡潔起見,我省略了php exec代碼。我認爲它需要'shell_exec('foo -arg1 ... | echo'\ n「')'儘管想到它。 – Kris 2010-06-28 22:14:43
它應該是'echo'\ n「| foo ...' – 2010-06-28 22:53:33
您將確實需要o pen a process handle並解析程序輸出並寫入適當的輸出作爲響應。
查看expect擴展雖然,這可以使這種事情更容易。
$value = fgets(STDIN);
這將允許用戶在一個值,你可以然後通過$值訪問進入。
從這個問題看來,php腳本似乎沒有從命令行運行... – grossvogel 2010-06-28 22:54:03
有時CLI程序有一個批處理模式選項,告訴他們不要問問題,如果其中一個選項可用,您應該使用它。如果它是你自己的程序,你可以考慮添加一個選項。 – 2010-06-28 22:59:27