使用php exec()对composer.phar的问题做出反应

时间:2013-02-17 17:26:32

标签: php exec command-line-interface

我相信标题有点模糊。但是我的英语不好,所以我缺少一个更好的。

我目前正在编写一个也从源代码执行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来说是不可能的。所以我需要一些交互模式或者什么。

1 个答案:

答案 0 :(得分:2)

提醒一句:寻找可以发送到初始命令的标志以“自动回答”。你对composer.phar会问什么问题或它会问他们的命令没有真正的保证。它应被视为“黑客”,我们大脑中的正常反应应该适用于所有它的谨慎和背景等......

无论如何,我认为你需要的是proc_open(),这让你开始一个进程,并且可以访问stdin和stdout。请参阅该文档页面上的示例#1代码,它与您可能需要的内容非常接近。

一旦您有权访问该进程的stdin / stdout资源,您可以随意读取/写入它们。好消息是,这将让你“阅读”提示,并至少仔细检查它是否在询问你的预期(例如,如果你不认识提示,则抛出异常)