从PHP发送命令到Windows命令行(cmd)

时间:2010-12-15 13:04:42

标签: php command-line windows-server-2008

这可能吗?

我想做的是发送:

run_app.exe -param 'test' -name 'tester'

到PHP的Windows cmd行。

这是可能的还是我需要编写一个以某种方式由应用程序触发的Windows服务?

5 个答案:

答案 0 :(得分:1)

您是否尝试过exec

答案 1 :(得分:1)

您可以使用exec()

答案 2 :(得分:1)

我建议使用标准的PHP system命令。 official PHP site中有大量信息和示例。

exec()system()passthru()之间的差异已得到解答question on SO

答案 3 :(得分:0)

或者您可以使用:

$WshShell = new COM("WScript.Shell");
$oExec = $WshShell->Run(strCommand, [intWindowStyle], [bWaitOnReturn]);

在这里你可以找到run方法参数:http://msdn.microsoft.com/en-us/library/d5fk67ky%28v=vs.85%29.aspx

这是COM类文档:http://www.php.net/manual/en/class.com.php

使用此方法,您可以在Windows中执行更多操作:)。 我使用它是因为[bWaitOnReturn]参数,我无法使用任何其他方法。

答案 4 :(得分:0)

这是一个允许PHP获取动态与真实cmd终端进行交互的项目。在此处获取:https://github.com/merlinthemagic/MTS

下载后,您只需使用以下代码:

//if you prefer Powershell, replace 'cmd' with 'powershell'
$shellObj    = \MTS\Factories::getDevices()->getLocalHost()->getShell('cmd');

$strCmd1   = 'run_app.exe -param "test" -name "tester"';
$return1   = $shellObj->exeCmd($strCmd1);

返回将为您提供命令返回或来自cmd的错误,就像您坐在控制台一样。此外,您可以针对$ shellObj发出任何您喜欢的命令,在PHP脚本的整个生命周期中都会维护该环境。因此,不是在脚本文件中捆绑命令,而是使用exeCmd()方法逐个发出命令,这样您也可以处理返回和任何异常。