fsockopen返回'布尔(false)'
问题描述:
我的问题标题似乎与其他问题相同,但问题与其他问题不同。 我的代码:fsockopen返回'布尔(false)'
$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问题。提前致谢。
答
fsockopen函数问题。要在本地和不安全的服务器上测试,我们必须从fsockopen函数调用中删除$ parts ['scheme']。'://'。
$fp=fsockopen($parts['host'], isset($parts['port'])
? $parts['port'] : 80, $errno, $errstr, 30);
答
的的fsockopen()
first argument是$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);
isset? $ parts ['port']:443.你不设置端口,但是你使用http方案 –
@ChenYunlong:是的,我发现了这个问题。谢谢 :) – Sucharitha