首先,我在本地拥有一个 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的回声时,回显不显示任何内容。
提前致谢。
答案 0 :(得分:1)
在这种情况下使用shell_exec
可能更好,因为您正在执行多个命令。
答案 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);
})();