cztomczak / phpdesktop

Develop desktop GUI applications using PHP, HTML5, JavaScript and SQLite
https://groups.google.com/d/forum/phpdesktop
2.7k stars 574 forks source link

Executing commands may hang on Windows XP for some programs #124

Open GoogleCodeExporter opened 9 years ago

GoogleCodeExporter commented 9 years ago
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 czarek.t...@gmail.com on 3 Oct 2014 at 3:56

GoogleCodeExporter commented 9 years ago
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 czarek.t...@gmail.com on 3 Oct 2014 at 5:09

GoogleCodeExporter commented 9 years ago
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 czarek.t...@gmail.com on 4 Oct 2014 at 6:30

Croydon commented 7 years ago

No XP support anymore, right?

cztomczak commented 7 years ago

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 commented 6 years ago

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

darkterminal commented 2 years ago

@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.