浅析虚拟主机服务器php fsockopen函数被禁用的解决办法


Posted in PHP onAugust 07, 2013

一、如何禁用fsockopen()
下面是两种常用的禁用fsockopen的方法。
1、修改php.ini,将 disable_functions = 后加入 fsockopen
2、修改php.ini,将 allow_url_fopen = On 改为 allow_url_fopen = Off

二、如何解决fsockopen函数被禁用
1、如果服务器没有同时禁用pfsockopen,那么直接将fsockopen函数替换为pfsockopen。
具体操作:搜索程序中的字符串 fsockopen( 替换为 pfsockopen( 。示例如下
修改前:
$fp = fsockopen($host, 80, $errno, $errstr, 30);
修改后:
$fp = pfsockopen($host, 80, $errno, $errstr, 30);
2、如果服务器同时禁用了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);
3、如果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;
}

具体操作:1.首先找到使用fsockopen函数的代码段,将上面代码加至其上端,搜索该代码段中的字符串 fsockopen( 替换为 b_fsockopen(
2.因为fsockopen函数返回文件指针所以可以被文件函数操作,但是这个b_fsockopen函数没能返回文件指针,需要继续修改代码段:用socket_read( 替换掉 fread( ,用socket_write( 替换掉fwrite( ,用socket_close( 替换掉fclose(
PHP 相关文章推荐
php中DOMDocument简单用法示例代码(XML创建、添加、删除、修改)
Dec 19 PHP
php IP转换整形(ip2long)的详解
Jun 06 PHP
ecshop 2.72如何修改后台访问地址
Mar 03 PHP
PHP中文竖排转换实现方法
Oct 23 PHP
Symfony2实现在doctrine中内置数据的方法
Feb 05 PHP
Yii CDBCriteria常用方法实例小结
Jan 19 PHP
PHP + plupload.js实现多图上传并显示进度条加删除实例代码
Mar 06 PHP
使用PHPStorm+XDebug搭建单步调试环境
Nov 19 PHP
PHP使用zlib扩展实现GZIP压缩输出的方法详解
Apr 09 PHP
PHP使用redis位图bitMap 实现签到功能
Oct 08 PHP
Laravel 框架基于自带的用户系统实现登录注册及错误处理功能分析
Apr 14 PHP
详解PHP用mb_string处理windows中文字符
May 26 PHP
浅析php fwrite写入txt文件的时候用 \r\n不能换行的问题
Aug 06 #PHP
一个漂亮的php验证码类(分享)
Aug 06 #PHP
如何在php中正确的使用json
Aug 06 #PHP
PHP 线程安全与非线程安全版本的区别深入解析
Aug 06 #PHP
浅析php中三个等号(===)和两个等号(==)的区别
Aug 06 #PHP
解析php中如何调用用户自定义函数
Aug 06 #PHP
使用php实现截取指定长度
Aug 06 #PHP
You might like
php基础知识:函数基础知识
2006/12/13 PHP
配置eAccelerator和XCache扩展来加速PHP程序的执行
2015/12/22 PHP
PHP长连接实现与使用方法详解
2018/02/11 PHP
CentOS7编译安装php7.1的教程详解
2019/04/18 PHP
brook javascript框架介绍
2011/10/10 Javascript
jquery复选框checkbox实现删除前判断
2014/04/20 Javascript
JavaScript编写连连看小游戏
2015/07/07 Javascript
js实现页面a向页面b传参的方法
2016/05/29 Javascript
js 实现获取name 相同的页面元素并循环遍历的方法
2017/02/14 Javascript
ECMAScript6变量的解构赋值实例详解
2017/09/19 Javascript
javacript replace 正则取字符串中的值并替换【推荐】
2018/09/13 Javascript
Vue.js中 v-model 指令的修饰符详解
2018/12/03 Javascript
js变量值传到php过程详解 将php解析成数据
2019/06/26 Javascript
[40:48]DOTA2上海特级锦标赛D组败者赛 Liquid VS COL第二局
2016/02/28 DOTA
[49:29]LGD vs Winstrike 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/18 DOTA
Python实现爬虫从网络上下载文档的实例代码
2018/06/13 Python
Python设置在shell脚本中自动补全功能的方法
2018/06/25 Python
tensorflow更改变量的值实例
2018/07/30 Python
python版DDOS攻击脚本
2019/06/12 Python
Python使用贪婪算法解决问题
2019/10/22 Python
Pytorch之parameters的使用
2019/12/31 Python
pytorch实现用CNN和LSTM对文本进行分类方式
2020/01/08 Python
python可视化text()函数使用详解
2020/02/11 Python
解决Tensorboard 不显示计算图graph的问题
2020/02/15 Python
CSS3 中filter(滤镜)属性使用详解
2020/04/07 HTML / CSS
html5 css3网站菜单实现代码
2013/12/23 HTML / CSS
最新的小工具和卓越的产品设计:Oh That Tech!
2019/08/07 全球购物
Bluebella德国官网:英国性感内衣和睡衣品牌
2019/11/08 全球购物
教师演讲稿范文
2014/01/08 职场文书
清华大学自主招生自荐信
2014/01/29 职场文书
超市中秋节促销方案
2014/03/21 职场文书
个人主要事迹材料
2014/08/26 职场文书
大学生实习证明
2015/06/16 职场文书
导游词之台湾安平古堡
2019/12/25 职场文书
pytorch损失反向传播后梯度为none的问题
2021/05/12 Python
python数据处理之Pandas类型转换
2022/04/28 Python