2014-02-25 3 views
0

이 코드를 사용하여 fsockopen을 검사했는데이 기능을 사용할 수 있습니다.fsockopen()이 활성화되었지만 작동하지 않습니다.

<?php 
if(function_exists('fsockopen')) { 
    echo "fsockopen function is enabled"; 
} 
else { 
    echo "fsockopen is not enabled"; 
} 
?> 

다음은 내가 작업해야하는 스크립트에서 사용되는 코드입니다. 이 오류를 반환 다음은 fsockopen 기능이 작동하지 않는 오류 : (110) 연결 시간이 초과되었습니다 -

if (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == "on") $url = "https://"; 
else $url = "http://"; 
$url .= $HTTP_HOST.$REQUEST_URI; 
$querystring = "action=fsockopentest"; 
if (@strpos($url, "/", 8)) { 
    $urlpath = "/".substr($url, strpos($url, "/", 8)+1); 
    $urldomain = substr($url, 0, strpos($url, "/", 8)); 
} else { 
    $urlpath = "/"; 
    $urldomain = $url; 
} 
$urldomain = str_replace("http://", "", $urldomain); 
$postheader = "POST $urlpath HTTP/1.0\r\nHost: $urldomain\r\nContent-Type: application/x-www-form-urlencoded\r\nContent-Length: ".strlen ($querystring)."\r\n\r\n"; 
$fp = @fsockopen ($urldomain, 80, $errno, $errstr, 10); 
$res = ""; 
if ($fp) { 
    fputs ($fp, $postheader.$querystring); 
    while (!feof($fp)) $res .= fgets ($fp, 1024); 
    fclose ($fp); 
} 
if (strstr($res,"SUCCESS")) echo "<li>The fsockopen-function is working - <font color=\"#009900\">PASSED</font></li>"; 
else echo "<li>The fsockopen-function isn't working, error: $errno $errstr - <font color=\"#FF0000\">FAILED</font></li>"; 

echo "</ul>"; 

을 실패 잘못 될 수 무엇입니까?

+0

많은 일이 잘못되었을 수 있습니다. 어디로 연결되어 있습니까? – zerkms

+0

'fsockopen()'으로 호스트 이름을 결정할 때 잘못되었을 수있는 직접 작성한 코드가 많이 있습니다. 대신에 [''parse_url()'] (http://us2.php.net/manual/en/function.parse-url.php)을 사용할 것을 제안 할 수 있습니까? – Sammitch

답변

0
error: 110 Connection timed out - FAILED 

fsocks 기능이 할당 된 시간에 지정된 서버에 연결할 수 없기 때문에 발생합니다.

URL에 문제가 있거나 시간 초과로 인해 시간이 충분하지 않을 수 있습니다.