Bug #47630 [Com]: Unknown error using fsockopen() when with php-cgi through php cli

From: Date: Mon, 14 Jun 2010 09:29:35 +0000
Subject: Bug #47630 [Com]: Unknown error using fsockopen() when with php-cgi through php cli
References: 1  Groups: php.bugs 
Request: Send a blank email to php-bugs+get-151470@lists.php.net to get a copy of this message
Edit report at http://bugs.php.net/bug.php?id=47630&edit=1

 ID:               47630
 Comment by:       webmaster at gleitgeb dot at
 Reported by:      metala at metala dot org
 Summary:          Unknown error using fsockopen() when with php-cgi
                   through php cli
 Status:           Closed
 Type:             Bug
 Package:          Network related
 Operating System: Windows XP SP2
 PHP Version:      5.2.9

 New Comment:

Is it possible just to add a check if the environment variables are
correct/existing paths?
Otherwise the process should not start or it should add a comment in
some logfile ..

That stupid problem caused me hours of unnecessary work because I could
not find the connection between a wrong environment variable and a not
working socket connection (in my case imap_open didn't work as it always
said "Host not found")


Previous Comments:
------------------------------------------------------------------------
[2009-03-18 12:58:11] metala at metala dot org

I don't think "bug" need a fix.
A note in the PHP manual, in proc_open() function or elsewhere, would be
OK.

------------------------------------------------------------------------
[2009-03-18 12:50:34] metala at metala dot org

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.

------------------------------------------------------------------------
[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] johannes@php.net

Are you sure there is no firewall blocking?

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


The remainder of the comments for this report are too long. To view
the rest of the comments, please view the bug report online at

    http://bugs.php.net/bug.php?id=47630


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


Thread (8 messages)

« previous php.bugs (#151470) next »