我正在尝试使用vagrant和默认的ubuntu 10.04 64位机器将我的开发环境(symfony2应用程序)从我的Windows 7本地主机移动到虚拟机。一切都设置好了,几乎可以工作,但有一件事困扰着我:
当我运行 ant 并执行 phpunit 时,我在执行自制引导程序时出现以下错误:
stty: standard input: Invalid argument
我可以将问题缩小到以下代码行,该代码行执行symfony cache:warmup命令:
executeCommand($application, "cache:warmup");
这将执行以下命令:
php app/console -e test -q cache:warmup
在没有 ant 的情况下运行 phpunit 工作正常,在没有 executeCommand 行的情况下运行 ant 也是如此。
我读了一些关于这个stty错误的信息,并查找了~/.bashrc
,~./profile
,/etc/bash.bashrc
,/etc/profile
以及/root/.bashrc
和/root/.profile
,但没有找到类似tty或stty的东西。所以我不知道我可以删除什么来使其工作。
我有点卡住了,因为我需要缓存预热并且无法弄清楚出了什么问题。
这花了一段时间才弄清楚,但现在我明白了。
出于某种原因,传递给 symfony2 应用程序对象的选项仅在由 ant 运行时导致问题。我对导致它的原因没有任何了解,但是将命令更改为此命令可以解决此问题:
php app/console --env=test --quiet cache:warmup
由于这只是长形式,不会改变任何东西,我很高兴。我的整个执行命令函数如下所示:
function executeCommand($application, $command, Array $options = array()) {
$options["--env"] = "test";
$options["--quiet"] = true;
$options = array_merge($options, array('command' => $command));
$application->run(new ArrayInput($options));
}
唯一的行更改是 2 和 3,其中数组的键从 -e
和 -q
更改为 。我希望这对一个或另一个在这样的问题上挣扎的人有所帮助!