2017-01-25 214 views
1

當我試圖使用fsockopen時,我得到了operation timed out errcode 60錯誤。fsockopen:操作超時

這的ReCaptcha類中失敗了,但它也發生了下面的代碼片段:

<?php 
$fp = fsockopen("www.google.com", 80, $errno, $errstr, 30); 
if (!$fp) { 
    echo "$errstr ($errno)<br />\n"; 
} else { 
    $out = "GET/HTTP/1.1\r\n"; 
    $out .= "Host: www.example.com\r\n"; 
    $out .= "Connection: Close\r\n\r\n"; 
    fwrite($fp, $out); 
    while (!feof($fp)) { 
     echo fgets($fp, 128); 
    } 
    fclose($fp); 
} 
?> 

這個錯誤我轉我的環境中使用PHP 7.0之後開始。

最有趣也最有趣的事情是,它的工作當我切換的URL ... www.stackoverflow.com得到HTTP/1.1 200 OK標題。

超時發生在如下網站上:google.com,yahoo.com,facebook.com

基地擴展安裝,包括:

  • OpenSSL的,
  • 插座,
  • 會議

精確PHP版本:

# php -v 
PHP 7.0.15 (cli) (built: Jan 24 2017 01:17:16) (NTS 

難道你們中的任何人有類似的問題,並可能點我在正確的方向嗎?

+0

這可能有助於:http://stackoverflow.com/questions/11682207/can-i-change-default-socket-timeout-from-my-php-code#11682254 – JustOnUnderMillions

+0

@JustOnUnderMillions我試過,但是頁面卡住,重複加載。 –

+0

Sry忍不住多了,我只是指着你的超時問題。套接字很複雜:-) – JustOnUnderMillions

回答

0

自己解決了這個問題。

這是由防火牆配置(使用IPFW)腳本引起的,由於某種原因它拒絕了IPv6連接,這在以前沒有發生過。

在允許ip6狀態連接後,問題消失了。