6

我需要使用 exec 运行网络浏览器(chrome - firefox ..)

我尝试过使用 bat 文件(这里提到的这个方法

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 剂量在任务管理器中打开,但浏览器界面不可见.. 有什么想法吗?

4

5 回答 5

5

我不是 Windows 专家,但我认为您需要允许desktop interaction,如果父进程作为 Windows 服务运行,这并不容易/不可能。php 在 apache 进程内运行,您可能已经将其作为服务运行。

尝试停止服务并手动启动 httpd.exe,然后当我通过 apache 通过 localhost url 请求脚本时,以下对我有用。我的 php 通过普通的旧 cgi 与 apache 交互。

exec('"C:\Program Files (x86)\Mozilla Firefox\firefox.exe" "http://stackoverflow.com/"');

注意我对引号的使用。

于 2012-06-30T17:09:14.757 回答
5

所以这是我在这里找到的另一个很好的解决方法,想法是创建一个调度程序来执行你想要的程序并使用命令调用它

希望这有帮助:

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');
于 2017-07-15T19:02:08.920 回答
3

我通过在 windows 上禁用 apache 服务并使用 httpd.exe 启动 apache 解决了这个问题,之后可以使用 exec() 打开任何 GUI windows 程序。

exec("Path_to_mi_program.exe" "file_to_open");
于 2016-12-17T05:40:26.970 回答
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");
?>

取自这里

于 2012-06-30T17:05:42.830 回答
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)
于 2013-05-26T18:38:29.170 回答