2013-02-17 50 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代码,它非常接近您可能需要的内容。

一旦你有权访问进程的标准输入/标准输出资源,无论你喜欢,你都可以读/写它们。好消息是,这将让你“阅读”提示,并至少仔细检查它是否问你期望它提出的问题(例如,如果你不认识提示,抛出异常)