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

Reply via email to