phpdesktop icon indicating copy to clipboard operation
phpdesktop copied to clipboard

Executing commands may hang on Windows XP for some programs

Open GoogleCodeExporter opened this issue 10 years ago • 6 comments

It's a PHP bug 44942:
https://bugs.php.net/bug.php?id=44942

When executing wmic.exe to fetch software/hardware information, it will hang:

  ob_start();
  $ret = system("C:\Windows\System32\wbem\wmic.exe path win32_computersystemproduct get uuid");
  $output = ob_get_contents();
  ob_end_clean();

Tried using WScript.Shell COM object and its method Exec() instead, but it 
failed as well.

We may introduce ExecuteCommand function to javascript API.

Another option is to create a helper executable for eg. exec-cmd.exe that would 
work around the PHP bug, it would be called like this:

  system("exec-cmd.exe \"C:\Windows\System32\wbem\wmic.exe path win32_computersystemproduct get uuid\"");

Original issue reported on code.google.com by [email protected] on 3 Oct 2014 at 3:56

GoogleCodeExporter avatar Aug 28 '15 11:08 GoogleCodeExporter

In PHP bug 44942 there is a comment by claudix with a supposedly workaround fix 
by making calls to session_start() and session_write_close(), and using 
proc_open/proc_close functions instead of system().

Original comment by [email protected] on 3 Oct 2014 at 5:09

GoogleCodeExporter avatar Aug 28 '15 11:08 GoogleCodeExporter

A FINAL SOLUTION TO THIS ISSUE. Use a command like this: "echo | command...". 
For example:

  $output = shell_exec("echo | {$_ENV['SYSTEMROOT']}\System32\wbem\wmic.exe path win32_computersystemproduct get uuid");
  if ($output) echo "Command succeeded. Output=".$output;
  else echo "Command failed.";

Original comment by [email protected] on 4 Oct 2014 at 6:30

GoogleCodeExporter avatar Aug 28 '15 11:08 GoogleCodeExporter

No XP support anymore, right?

Croydon avatar Mar 23 '17 19:03 Croydon

The last version that supported XP is the 47.5 release. Some people will still need/ask for XP support, so that 47.5 release will be still provided on Download wiki page for a long time. I am not closing this issue because it is still an issue for those who need to support XP.

cztomczak avatar Mar 23 '17 20:03 cztomczak

Alternatively you could use a NirCmd command-line utility, see: https://github.com/cztomczak/phpdesktop/wiki/Knowledge-Base#how-do-i-call-external-programs-or-commands-asynchronously-in-background-without-waiting-for-them-to-end

cztomczak avatar Mar 28 '18 11:03 cztomczak

@Croydon or you can find inspiration in my example

I have pull example how to create Windows Print Service on start up and on shutdown application just feel free to take a look https://github.com/cztomczak/phpdesktop/pull/305 maybe it's help you to know how it's work for me. I forgot to write settings.json value listen_on with fixed value in README.md example.

darkterminal avatar Dec 25 '21 07:12 darkterminal