好消息:胡歌网摘新面貌迎接2015~!

discuz发帖geetest极验导致的Could not open socket! 错误解决方法

网络技术 胡歌 849浏览 0评论

今天在论坛上发帖,死活都发不出去,一提交就返回错误: Could not open socket!

google了一堆没用的信息,后来定位到可能是geetest极验导致的,然后去geetest官网找问题,果然找到了这个错误,官方的解决办法是这样的:

报错:Could not open socket!

解决方法:服务器的php配置中关闭了PHP.ini 中 allow_url_fopen选项,联系空间商,或者自己手动去开启。

然而我看了我的php.ini中allow_url_fopen是On,没问题的,然后想到可能是禁用了fsockopen函数,将php.ini里的disable_functions =后面的fsockopen删掉,重启php,果然可以发帖了,然而我不可能开启fsockopen这个函数的,太危险。

所以采用修改geetest的php代码的方法:
修改这个文件:/source/plugin/geetest/lib/geetestlib.php
 

       if (($fs = @fsockopen($host, $port, $errno, $errstr, 10)) == false) {
            die (‘Could not open socket! ‘ . $errstr);
        }
改为:
        if (($fs = @stream_socket_client(“tcp://”.$host.”:”.$port, $errno, $errstr, 10)) == false) {
            die (‘Could not open socket! ‘ . $errstr);
        }
 
测试,完美搞定。
 
P.S. 有些想不明白,这么简单弱智的一个问题,为啥geetest极验官方也不解决一下?多做个判断以应对各种主机环境,这是很简单的事情吧?毕竟现在php禁止fsockopen,pfsockopen这些危险函数是非常普遍的了。

转载请注明:胡歌网摘 » discuz发帖geetest极验导致的Could not open socket! 错误解决方法

发表我的评论
取消评论
表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址