ホームページ  >  記事  >  バックエンド開発  >  fsockopen php 操作が失敗する問題を解決する方法

fsockopen php 操作が失敗する問題を解決する方法

藏色散人
藏色散人オリジナル
2021-07-16 09:24:422935ブラウズ

サーバー設定の問題により fsockopen php 操作が失敗し、localhost が監視されませんでした。解決策はサーバーのネットワーク環境をリセットすることです。

fsockopen php 操作が失敗する問題を解決する方法

#この記事の動作環境: Windows7 システム、PHP7.1 バージョン、DELL G3 コンピューター

具体的な質問:

php fsockopen ローカル エラー? fsockopen php 操作が失敗する問題を解決するにはどうすればよいですか?

fsockopen を使用して非同期呼び出しを行うときにエラーが発生しました。Alibaba Cloud centos と Tencent Cloud win2008 では、同じコードで問題が発生しませんでした。

ホスト アドレスを 127.0.0.1 に書き込むか、localhost が表示されます:

警告: fsockopen(): ターゲット マシンが積極的に拒否しているため、接続できません。 (10061)

host が現在のサーバー ドメイン名を書き込み、次のように表示されます:

警告: fsockopen(): 接続側が一定期間経過しても正しく応答しなかったため、または接続試行が失敗しました。接続されているホストが応答しませんでした。 (10060)

ホストアドレス 現在のサーバー内部ネットワーク 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 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。