^_^您好,欢迎来到中电华联官网!

资讯中心

当前位置:网站首页

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

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

中电华联 | 官方网址:WWW.6HL.CN

河南省科技型企业备案编号:2014S0900062 ‖ 工信部备案许可证:豫ICP备17025003号 ‖ 中国网站安全防黑联盟成员

Copyright © 2013-2017 中电华联 版权所有

24H热线:400-870-2002