如何解決fsockopen php操作失敗問題

藏色散人
發布: 2023-03-11 16:02:01
原創
2994 人瀏覽過

fsockopen php操作失敗是因為伺服器設定問題,沒有監聽localhost,其解決方案就是重新設定伺服器網路環境即可。

如何解決fsockopen php操作失敗問題

本文操作環境:Windows7系統、PHP7.1版,DELL G3電腦

特定問題:

php fsockopen 本機出錯?如何解決fsockopen php操作失敗問題?

使用fsockopen進行非同步呼叫時出現錯誤,相同的程式碼在阿里雲centos、騰訊雲win2008下沒有出現問題。

host位址寫入127.0.0.1或localhost出現:

Warning: fsockopen(): 由於目標機器積極拒絕,無法連線。 (10061)

host寫入目前伺服器網域出現:

Warning: fsockopen():由於連線方在一段時間後沒有正確答覆或連線的主機沒有反應,連線嘗試失敗。 (10060)

host位址目前伺服器內網IP如 192.168.3.3 對應正常,沒有錯誤。

並且,在該伺服器向其他伺服器fsockopen或其他伺服器想該伺服器fsockopen都沒有問題,可以正常傳送。

程式碼如下:

function async_post($host,$path,$data){
    $post = http_build_query($data);
    $len = strlen($post);
    $fp = fsockopen( $host , 80, $errno, $errstr, 30);
    if (!$fp) {
        echo "$errstr ($errno)\n";
    } else {
        $out = "POST $path HTTP/1.1\r\n";
        $out .= "Host: $host\r\n";
        $out .= "Content-type: application/x-www-form-urlencoded\r\n";
        $out .= "Connection: Close\r\n";
        $out .= "Content-Length: $len\r\n";
        $out .= "\r\n";
        $out .= $post."\r\n";
        fwrite($fp, $out);
        fclose($fp);
    }
}
登入後複製

最終是透過內網ip呼叫的,但是為什麼會這樣呢?

解決方法:

已經找到問題根源:

伺服器設定問題,沒有監聽localhost

伺服器網路環境,不知道哪個網管搞的,伺服器不能透過外網IP存取自己。

這就導致,fsockopen只能透過192那啥來存取。

推薦學習:《PHP影片教學

以上是如何解決fsockopen php操作失敗問題的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板