fsockopen returns 'bool(false)'

fsockopen returns 'bool(false)'

我的问题标题好像和其他问题一样,但是issue和其他的不一样。 我的代码:

        $post_string = http_build_query($params);
        $parts = parse_url($url);       
        $errno = 0;
        $errstr = "";

        $fp = fsockopen($parts['scheme'].'://' . $parts['host'], isset($parts['port']) 
                   ? $parts['port'] : 443, $errno, $errstr, 30);            
        echo "<pre>"; var_dump($fp);

我的零件数组是:

Array
(
    [scheme] => http
    [host] => local.abhibus.com
    [path] => /search/distanceC
)

任何人都可以让我知道上面代码中导致 return false 的问题是什么。提前致谢。

fsockopen 函数有问题。要在本地和不安全的服务器上进行测试,我们必须从 fsockopen 函数调用中删除 $parts['scheme'].'://'。

$fp=fsockopen($parts['host'], isset($parts['port']) 
                    ? $parts['port'] : 80, $errno, $errstr, 30);

first argument of fsockopen()$hostname。没有方案,没有://。只是主机名。

此外,您应该根据方案确定默认端口:

// The default HTTP port is 80
$port = 80;
if (isset($parts['port'])) {
    // A port is specified in the URL; use it
    $port = $parts['port'];
} elseif ($parts['scheme'] == 'https') {
    // No port in URL and the protocol is HTTP
    // the default port for HTTPS is 443
    $port = 443;
}

$fp = fsockopen($parts['host'], $port, $errno, $errstr, 30);