exec()似乎不执行.exe

时间:2016-10-05 09:35:09

标签: php html exe

首先,我在本地拥有一个 Wamp64 的网站。我想执行 .exe 文件。

所以我使用这样的exec()函数:

$output = exec("cd 'C:\Program Files (x86)\ENENSYS\DiviSuite' & DiviSuite-CLI.exe --in-rf --in-rf-standars T --in-rf-frequency=474 --in-rf-bandwidth=8 --in-rf-duration=20 --out-file C:\wamp64\capture.ts");

程序必须记录一个流并将其放在C:\ wamp64 \中,但它没有,而当我在 MS DOS 控制台中执行相同的命令行时,它可以工作。

另外,当我输出$ output的回声时,回显不显示任何内容。

提前致谢。

4 个答案:

答案 0 :(得分:1)

在这种情况下使用shell_exec可能更好,因为您正在执行多个命令。

doc:http://php.net/manual/function.shell-exec.php

答案 1 :(得分:1)

请改为尝试:

$output = exec("\"C:\\Program Files (x86)\\ENENSYS\\DiviSuite DiviSuite-CLI.exe --in-rf --in-rf-standars T --in-rf-frequency=474 --in-rf-bandwidth=8 --in-rf-duration=20 --out-file C:\\wamp64\\capture.ts");

它应该工作:)

答案 2 :(得分:0)

可以手动cd到DiviSuite文件夹并尝试从DiviSuite文件夹运行该php文件,从exec中删除cd命令。 ?

答案 3 :(得分:0)

试试这个

(function(){
if(($olddir=getcwd())===false){
throw new RuntimeException('getcwd() failed!');
}
if(!chdir('C:/Program Files (x86)/ENENSYS/DiviSuite')){
throw new RuntimeException('failed to enter DiviSuite folder!');
}
$output=array();
$ret=0;
exec('DiviSuite-CLI.exe --in-rf --in-rf-standars T --in-rf-frequency=474 --in-rf-bandwidth=8 --in-rf-duration=20 --out-file C:\wamp64\capture.ts',$output,$ret);
if($ret!==0){
echo "WARNING, DID NOT RETURN 0. THIS IMPLY AN ERROR IN MOST PROGRAMS.".PHP_EOL;
}
var_dump('returned:',$ret,'output:',$output);
chdir($olddir);
})();