86考网
会考成绩查询
您的位置:首页 > 范文 > IT技术专栏 > 网站运营 >

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

作者:86考网 发布时间:2016-09-21 10:59:06 [手机版]
摘要:我们发现fsockopen pfsockopen函数存在着重大安全隐患,会对整个机房产生极大的影响,为了维护机房以及自身网络的稳定,我们不得不在所有主机产品上禁用fsockopen pfsockopen函数,我们会首先将隐患发生较重的服务器着手操作,其他的服务器会分批分量进行,

  我们发现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;

   }     


标签:
相关推荐
86考网声明:
(一) 由于各方面情况的调整与变化,本网所提供的考试信息仅供参考,敬请以权威部门公布的正式信息为准。
(二) 本网注明来源为其他媒体的稿件均为转载稿,免费转载出于非商业性学习目的,版权归原作者所有。如有内容、版权等问题请在30日内与本网联系。联系方式:邮件 jiansou123#126.com
最近更新
网站地图 | XML地图 | 手机版 | 标签
版权所有 © 2005-2022 www.kaoshi86.com 会考成绩查询 All Rights Reserved
本网站所有信息全是来源于互联网,如有侵权请来电咨询! 粤ICP备15072123号