2017-10-10 3 views
-1

내 질문 제목은 다른 질문과 같지만 다른 질문과 다릅니다. 내 코드 :fsockopen이 'bool (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를 반환하게 위의 코드에서 문제가 무엇인지 알려 주시기 바랍니다 수 있습니다. 미리 감사드립니다.

+1

는 isset ($ 부품 [ '포트']) :

또한, 계획에 따라 기본 포트를 결정해야? $ parts [ 'port'] : 443. 포트를 설정하지 않았지만 http scheme을 사용합니다. –

+0

@ChenYunlong : 예 문제점을 발견했습니다. 고맙습니다 :) – Sucharitha

답변

0

fsockopen 기능 관련 문제. 로컬 및 비보안 서버에서 테스트하려면 fsockopen 함수 호출에서 $ parts [ 'scheme']. : // '을 제거해야합니다.

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

first argumentfsockopen()의는 $hostname입니다. No scheme, no ://. 그냥 호스트 이름.

// 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);    
관련 문제