您好,登錄后才能下訂單哦!
本篇內容主要講解“怎么解決fsockopen php操作失敗問題”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“怎么解決fsockopen php操作失敗問題”吧!
fsockopen php操作失敗是因為服務器設置問題,沒有監聽localhost,其解決辦法就是重新設置服務器網絡環境即可。
本文操作環境: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那啥訪問。
到此,相信大家對“怎么解決fsockopen php操作失敗問題”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。