我需要使用exec
运行网络浏览器(chrome - firefox ..)我曾尝试使用bat文件(此方法提到here)
C:\Users\farok\AppData\Local\Google\Chrome\Application\chrome.exe www.google.com
当我使用Windows打开文件时,每件事情都顺利但是当我使用exec打开它时没有任何反应
我尝试使用BrowserControl类
的jar文件BrowserControl.displayURL("www.google.com");
和bat文件一样,有没有办法做到这一点?
注意:我正在使用wamp 2.2,Apache 2.0,PHP V5.3.8
更新
我在运行此命令后发现
exec('"C:\Program Files (x86)\Mozilla Firefox\firefox.exe" "www.google.com" 2> errors.txt');
在任务管理器中打开firefox剂量,但浏览器界面不可见..任何想法?
答案 0 :(得分:4)
我不是Windows专家,但我认为您需要允许desktop interaction
,如果父进程作为Windows服务运行,这不容易/可能。 php在apache进程中运行,你可能已经将其作为服务运行。
尝试停止服务并手动启动httpd.exe ,然后当我通过apache通过localhost url请求脚本时,以下内容适用于win7。我的php通过普通的旧cgi与apache接口。
exec('"C:\Program Files (x86)\Mozilla Firefox\firefox.exe" "http://stackoverflow.com/"');
请注意我对引号的使用。
答案 1 :(得分:3)
所以这是我发现here的另一个好的解决方法,我的想法是创建一个执行所需程序的调度程序,并使用命令调用它
希望这有帮助:shell_exec('SCHTASKS /F /Create /TN _notepad /TR "notepad.exe" /SC DAILY /RU INTERACTIVE');
shell_exec('SCHTASKS /RUN /TN "_notepad"');
shell_exec('SCHTASKS /DELETE /TN "_notepad" /F');
答案 2 :(得分:1)
可能最简单的方法是使用COM(我假设它只能在Windows计算机上本地运行):
<?php
function _exec($cmd)
{
$WshShell = new COM("WScript.Shell");
$oExec = $WshShell->Run($cmd, 0,false);
echo $cmd;
return $oExec == 0 ? true : false;
}
_exec("youexe.exe");
?>
取自here
答案 3 :(得分:1)
我通过在Windows上禁用apache服务并使用httpd.exe启动apache解决了这个问题 之后可以使用exec()打开任何GUI窗口程序。
exec("Path_to_mi_program.exe" "file_to_open");
答案 4 :(得分:0)
这只是关于用户。运行程序时,它以系统用户运行。我尝试了runas /user:myusername blabla.exe
,但它返回了myusername的密码并退出。
$deneme = shell_exec('runas /user:myusername C:\Windows\Temp\putty.exe');
echo "$deneme";
它返回了:
myusername için parolayı girin: (english: password for myusername)