免费空间
您的位置:首页 > 免费教程

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

作者:免费空间 发布时间:2016-08-03

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

       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;

   }     



阅读全文

上一篇:ASP网站程序访问出现“常见错误 不能打开注册表关键字”的解决方法

下一篇:Windows下自由创建.htaccess文件的几种方法

相关推荐
免费空间声明:
(一) 由于各方面情况的调整与变化,本网所提供的考试信息仅供参考,敬请以权威部门公布的正式信息为准。
(二) 本网注明来源为其他媒体的稿件均为转载稿,免费转载出于非商业性学习目的,版权归原作者所有。如有内容、版权等问题请在30日内与本网联系。联系方式:邮件 jiansou123@126.com
网站地图 | XML地图 | PC版
版权所有 © www.128sj.com 免费空间
本网站所有信息全是来源于互联网
如有侵权请来电咨询!
粤ICP备16040413号-1