ID:               47630
 Comment by:       metala at metala dot org
 Reported By:      metala at metala dot org
 Status:           Feedback
 Bug Type:         Network related
 Operating System: Windows XP SP2
 PHP Version:      5.2.9
 New Comment:

OK, problem solved.

The problem is in the Environment variables of the new process:
$env = array (
  'SCRIPT_FILENAME' => dirname(__FILE__).'\\child.php',
);
The missing variable is SystemRoot, which in my case is "C:\WINDOWS".
So with the final settings:
$env = array (
  'SCRIPT_FILENAME' => dirname(__FILE__).'\\child.php',
  'SystemRoot' => $_ENV['SystemRoot'],
);

Network functionality is working perfectly.


Previous Comments:
------------------------------------------------------------------------

[2009-03-16 21:04:30] metala at metala dot org

It failed again.

As I wrote in the description "any network function fails".
What I did was:
$fp = fsockopen('google.com', 80, $errno, $errstr);
And the result was:
H:\test\php>php parent.php
X-Powered-By: PHP/5.2.9-1
Content-type: text/html

<br />
<b>Warning</b>:  fsockopen() [<a
href='function.fsockopen'>function.fsockopen</a
>]: php_network_getaddresses: getaddrinfo failed: No such host is
known.  in <b>
H:\test\php\child.php</b> on line <b>2</b><br />
<br />
<b>Warning</b>:  fsockopen() [<a
href='function.fsockopen'>function.fsockopen</a
>]: unable to connect to google.com:80 (php_network_getaddresses:
getaddrinfo fa
iled: No such host is known. ) in <b>H:\test\php\child.php</b> on line
<b>2</b><
br />
int(0)
string(69) "php_network_getaddresses: getaddrinfo failed: No such host
is known.
 "


When I run it in DOS:
>SET SCRIPT_FILENAME=child.php
>php-cgi

There appears to be no error.

------------------------------------------------------------------------

[2009-03-16 20:37:06] metala at metala dot org

I disabled it before testing.

I have another Windows XP machine I can test on. Results coming soon.

------------------------------------------------------------------------

[2009-03-16 19:53:11] johan...@php.net

Are you sure there is no firewall blocking?

------------------------------------------------------------------------

[2009-03-12 13:01:43] metala at metala dot org

I tested it on another Windows XP machine and got the same result.

On the other hand with Debian GNU/Linux Squeeze I have no problems.

------------------------------------------------------------------------

[2009-03-12 06:06:29] metala at metala dot org

Description:
------------
The problem persists in 5.2.6, 5.2.9 and 5.2.9-1 in Windows only.
I have 2 script files, a parent.php and a child.php. The parent.php,
which is running in CLI, starts the child.php with php-cgi.exe.
fsockopen(), or any other network function fails.

Reproduce code:
---------------
parent.php
<?php
$env = array (
  'SCRIPT_FILENAME' => dirname(__FILE__).'\\child.php',
);
$descriptorspec = array(
        0 => array("pipe", "r"),
        1 => array("pipe", "w"),
        2 => array("pipe", "w"),
);
$procName = 'php-cgi';
$proc = proc_open($procName, $descriptorspec, $pipes, null, $env,
array('bypass_shell' => true));
$read = array($pipes[1]);
stream_select($read, $null = array(), $null = array(), 100);
echo fread($read[0], 1024);

child.php
<?php
$fp = fsockopen('127.0.0.1', 445, $errno, $errstr);
var_dump($errno, $errstr);

Expected result:
----------------
I expect no error to be returned, because 445 is opened and even telnet
manages to connect.

Actual result:
--------------
H:\test\php>php parent.php
X-Powered-By: PHP/5.2.9-1
Content-type: text/html

<br />
<b>Warning</b>:  fsockopen() [<a
href='function.fsockopen'>function.fsockopen</a
>]: unable to connect to 127.0.0.1:445 (Unknown error) in
<b>H:\test\php\child.p
hp</b> on line <b>2</b><br />
int(0)
string(0) ""


------------------------------------------------------------------------


-- 
Edit this bug report at http://bugs.php.net/?id=47630&edit=1

Reply via email to