I am running into an issue that I just can't seem to find the answer to. I have a Windows Server 2008 box that is running Apache 2.2.14, PHP 5.2.11, and MySQL 5.1.39. My problem is I am trying to call a VBScript that interracts with a database on another machine but I can't seem to get it to actually run the script. Watching Process Explorer I can clearly see that httpd.exe spawns php-cgi.exe which spawns wscript.exe so it appears that the actual call is working. However, after a few seconds the php-cgi.exe process closes and the wscript.exe process breaks out into its own process (no parent anymore) and never runs the code or closes. I actually have to end task for it to go away. When I run the script through PHP Command Line, it works perfectly as expected. This happens both with the vbscript being on the local machine, and on a UNC path of another machine. I stripped down the code to the most simple form I could, and even tried putting nothing more than a message dialog in the VBScript, and still I run into this error. Does anyone know why this might be happening? I don't see any errors in the logs, or through the browser when the page loads. This exact same setup was working on a Windows 2000 Server machine so I'm not sure if this is something unique to 2008 or just a overlooked setting somewhere.
how is the script being called from php, are you using exec? Is exec allowed in php.ini? I'm guessing the issues is this or something like it. It's likely that php from the command line has different setting than from cgi with apache. I'd do a php_info() from command line and compare that to running it from the webserver to see which setting might be preventing it from working.
I just compared both the CLI and web phpinfo, there is nothing major different between them. Here is a stripped down script that still suffers from it. <?php $oShell = new COM("WScript.Shell"); $oShell->Run("C:\test\test.vbs"); ?> Where test.vbs contains: WScript.echo "Hello!" I may be oversimplifying this, but I thought if it happens with this, there is something wrong. Any ideas?
It appears that the problem lies in how Vista/2008 run services. Since my Apache installation is running as a service, it is not allowed to interact with the desktop. Since the script has a GUI portion to it (the echo messagebox), it is required to have that right. Even when clicking the right to "Allow this service to interact with the desktop" it still fails. When I change Apache to run as a program instead of service, it worked.