2013-02-17 47 views
3

我相信標題有點模糊。但我的英語不好,所以我缺乏一個更好的。對php作出的composer.phar問題作出反應()

我現在正在編寫一個工具,它也執行源代碼中的composer.phar。

所以,當安裝一些與composer.phar的東西,它有時會問問題,並希望額外的輸入,如所需的格式或簡單的Y/N問題。

當我使用exec()時,似乎無法對這些問題做出反應。

所以我想知道如何用PHP實現這一點。

任何想法?

更新 要顯示一個簡單的例子,我這​​樣做:這裏

exec("php /Users/johannesklauss/Development/web/composer.phar create-project symfony/framework-standard-edition /Users/johannesklauss/Development/web/Symfony 2.1.x-dev"); 

問題是,在作曲家和詢問是否應該保持版本控制歷史:

你想刪除現有的VCS(.git,.svn ..)歷史嗎? [Y,N]?

所以我需要在yn鍵入到控制檯。但這對exec來說是不可能的。所以我需要一些交互模式或者什麼。

+0

你能顯示一些代碼?我有一個想法,但我想把它放在上下文中。 – 2013-02-17 17:28:29

+0

更新了問題。 – 2013-02-17 17:34:47

回答

2

警告一句話:尋找可以發送到初始命令以「自動應答」的標誌。你對composer.phar會問什麼問題或者它會問他們的命令沒有真正的保證。它應該被認爲是「黑客」,我們的大腦中的正常反應應該適用於所有它的謹慎和上下文等...

無論如何,我認爲你需要的是proc_open(),讓我們開始一個過程並有權訪問它的stdin和stdout。請參閱該文檔頁面上的示例1代碼,它非常接近您可能需要的內容。

一旦你有權訪問進程的標準輸入/標準輸出資源,無論你喜歡,你都可以讀/寫它們。好消息是,這將讓你「閱讀」提示,並至少仔細檢查它是否問你期望它提出的問題(例如,如果你不認識提示,拋出異常)