• 技术文章 >后端开发 >PHP问题

    如何解决fsockopen php操作失败问题

    藏色散人藏色散人2021-07-16 09:24:42原创82

    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那啥访问。

    推荐学习:《PHP视频教程

    以上就是如何解决fsockopen php操作失败问题的详细内容,更多请关注php中文网其它相关文章!

    声明:本文原创发布php中文网,转载请注明出处,感谢您的尊重!如有疑问,请联系admin@php.cn处理
    专题推荐:fsockopen php
    上一篇:php.ini怎么配置错误日志 下一篇:php页面怎么设置密码
    VIP会员

    相关文章推荐

    • php怎么删除数组所有元素• php如何屏蔽错误提示• 实例讲解PHP如何在Yii框架中进行错误和异常处理• php.ini怎么配置错误日志

    全部评论我要评论

  • 取消发布评论发送
  • 1/1

    PHP中文网