Farok Ojil
Farok Ojil

Reputation: 654

PHP - Any chance to run GUI program through exec()?

i need to run a web browser (chrome - firefox ..) using exec

i have tried to do it using bat file (this method mentioned here)

C:\Users\farok\AppData\Local\Google\Chrome\Application\chrome.exe www.google.com

when i open the file using windows every thing goes well but nothing happened when i open it using exec

and i have tried to do it using jar file by BrowserControl class

BrowserControl.displayURL("www.google.com");

and the same as bat file happened so is there any way to do it?

note:im using wamp 2.2 ,Apache 2.0 , PHP V5.3.8

Update

i found that after i run this command

exec('"C:\Program Files (x86)\Mozilla Firefox\firefox.exe" "www.google.com" 2> errors.txt');

firefox dose open in task manager but the browser interface not visible .. any ideas?

Upvotes: 6

Views: 7611

Answers (5)

Baim Wrong
Baim Wrong

Reputation: 488

so this is another good workaround i found here, the idea is to create a scheduler that execute the program you want and call it using command

hope this help :

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');

Upvotes: 5

goat
goat

Reputation: 31813

I'm no windows expert, but I think you need to allow desktop interaction, which isn't easy/possible if the parent process runs as a windows service. php runs inside the apache process, which you probably have running as a service.

Try stopping the service and manually starting httpd.exe, and then the following works for me on win7 when i request the script via localhost url through apache. my php interfaces with apache via plain old cgi.

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

note my use of quotes.

Upvotes: 5

MTK
MTK

Reputation: 3570

I solved that by disabling apache service on windows and start apache with httpd.exe After that can use exec() for open any GUI windows program.

exec("Path_to_mi_program.exe" "file_to_open");

Upvotes: 3

Melih Yıldız'
Melih Yıldız'

Reputation: 425

It's just about users. When you run a program, it runs as system user. I tried runas /user:myusername blabla.exe but it returned password for myusername and exit.

$deneme = shell_exec('runas /user:myusername C:\Windows\Temp\putty.exe');
echo "$deneme";

it returned:

myusername için parolayı girin: (english: password for myusername)

Upvotes: 0

LeleDumbo
LeleDumbo

Reputation: 9340

Probably the easiest way is to use COM (I assume it will only run locally on a Windows computer):

<?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");
?>

Taken from here

Upvotes: 1

Related Questions