会考成绩查询-86考网
首页 范文 > IT技术专栏 > 网站运营 >

关于PHP函数(p)fsockopen禁用的解决办法

作者:86考网 发布时间:2016-09-21 10:58:57

  我们发现fsockopen pfsockopen函数存在着重大安全隐患,会对整个机房产生极大的影响,为了维护机房以及自身网络的稳定,我们不得不在所有主机产品上禁用fsockopen pfsockopen函数,我们会首先将隐患发生较重的服务器着手操作,其他的服务器会分批分量进行,有使用此功能的网站建议用户提前修改程序,以免影响网站的正常使用,给您带来不便,请您谅解!

关于fsockopen pfsockopen函数被禁用的解决方法

   一、

   服务器同时禁用了fsockopen pfsockopen,那么用其他函数代替,如stream_socket_client()。注意:stream_socket_client()和fsockopen()的参数不同。

   具体操作:

   搜索程序中的字符串 fsockopen( 替换为 stream_socket_client( ,

   然后,将原fsockopen函数中的端口参数“80”删掉,并加到$host。

   示例如下,修改前:    

      $fp = fsockopen($host, 80, $errno, $errstr, 30);

   修改后:    

      $fp = stream_socket_client($host."80", $errno, $errstr, 30);

   二、

   如果PHP版本低于5.0,fsockopen被禁用,又没有stream_socket_client()怎么办呢?自己写一个函数实现fsockopen的功能,参考代码:

       function b_fsockopen($host, $port, &$errno, &$errstr, $timeout) {

       $ip = gethostbyname($host);

       $s = socket_create(AF_INET, SOCK_STREAM, 0);

#p#分页标题#e#       if (socket_set_nonblock($s)) {

           $r = @socket_connect($s, $ip, $port);

               if ($r || socket_last_error() == EINPROGRESS) {

                   $errno = EINPROGRESS;

                   return $s;

               }

           }

       $errno = socket_last_error($s);

       $errstr = socket_strerror($errno);

       socket_close($s);

       return false;

   }     

阅读全文
标签: 没有tag

上一篇:asp+access网站数据表锁死导致网站无法访问的解决方法

下一篇:.htaccess文件设置友好的404页面

相关推荐
猜你喜欢
本类最新