ID: 22458 Updated by: [EMAIL PROTECTED] Reported By: jlondon at mail dot mcg dot edu -Status: Open +Status: Feedback Bug Type: IIS related Operating System: Windows NT Server 4.0 PHP Version: 4.3.0 New Comment:
Consult C:/temp/error-output.txt to see what went wrong with the child process. The reason that the CGI did not work is that the CGI does not accept a script from stdin any longer. (Whether this is intentional or not is still being discussed). You should use the CGI version of PHP for handling CGI requests from the web server, but use the CLI when running scripts from the command line, or from your code, or whenever it is not running in a correctly prepared CGI environment. I'd appreciate seeing that error-output.txt file so we can get a better idea of the problem. Previous Comments: ------------------------------------------------------------------------ [2003-02-27 11:31:57] jlondon at mail dot mcg dot edu Ok...that sort of worked. No more hangs and no more spawned processes, but nothing is output to the screen. The only thing I get is "command returned 128" but no hello world. Also what is the difference between php.exe at the root of the dir and php.exe in the cli dir? Why would one work and the other not? Should I be using the one in the cli dir as my script processor? Thanks a lot for you help. ------------------------------------------------------------------------ [2003-02-27 10:34:54] [EMAIL PROTECTED] Please try using the following for the command string: "C:\\php\\cli\\php.exe" ------------------------------------------------------------------------ [2003-02-27 10:30:32] jlondon at mail dot mcg dot edu No change...still runs like mad and crashes IIS. I can't even do a "net stop". I'm running the CGI version if that makes any difference. Also I have to refer to php as c:/php/php otherwise error-output.txt has the message "he name specified is not recognized as an internal or external command, operable program or batch file." ------------------------------------------------------------------------ [2003-02-27 08:51:50] [EMAIL PROTECTED] Please try using this CVS snapshot: http://snaps.php.net/php4-STABLE-latest.tar.gz For Windows: http://snaps.php.net/win32/php4-win32-STABLE-latest.zip ------------------------------------------------------------------------ [2003-02-27 08:26:25] jlondon at mail dot mcg dot edu proc_open hangs on the example that is in the manual. Here is the code. $descriptorspec = array( 0 => array("pipe", "r"), // stdin is a pipe that the child will read from 1 => array("pipe", "w"), // stdout is a pipe that the child will write to 2 => array("file", "c:/temp/error-output.txt", "a"), // stderr is a file to write to ); $process = proc_open("c:\php\php.exe", $descriptorspec, $pipes); if (is_resource($process)) { // $pipes now looks like this: // 0 => writeable handle connected to child stdin // 1 => readable handle connected to child stdout // Any error output will be appended to /tmp/error-output.txt fwrite($pipes[0], "<?php echo \"Hello World!\"; ?>" . chr(3)); fclose($pipes[0]); while(!feof($pipes[1])) { echo fgets($pipes[1], 1024); } fclose($pipes[1]); // It is important that you close any pipes before calling // proc_close in order to avoid a deadlock $return_value = proc_close($process); echo "command returned $return_value\n"; } I'm running NT4 Server/PHP4.3.2.2/IIS4. This bit of code opened up 54 php.exe/cmd.exe (that's 54 of each or 108 total) processes on my machine. ------------------------------------------------------------------------ -- Edit this bug report at http://bugs.php.net/?id=22458&edit=1