fsockopen返回&#bo;(false)'

时间:2017-10-10 05:12:04

标签: php codeigniter fsockopen

我的问题标题似乎与其他问题相同,但问题与其他问题不同。 我的代码:

        $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
)

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

2 个答案:

答案 0 :(得分:0)

fsockopen函数问题。要在本地和不安全的服务器上进行测试,我们必须删除$ parts [&#39; scheme&#39;]。&#39;://&#39;来自fsockopen函数调用。

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

答案 1 :(得分:0)

first argumentfsockopen()$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);