浅析虚拟主机服务器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 相关文章推荐
动态网站web开发 PHP、ASP还是ASP.NET
Oct 09 PHP
用文本文件实现的动态实时发布新闻的程序
Oct 09 PHP
php MySQL与分页效率
Jun 04 PHP
php正则校验用户名介绍
Jul 19 PHP
PHP调用Linux的命令行执行文件压缩命令
Jan 27 PHP
php实现utf-8和GB2312编码相互转换函数代码
Feb 07 PHP
php中用加号与用array_merge合并数组的区别深入分析
Jun 03 PHP
Yii操作数据库的3种方法
Mar 11 PHP
详解WordPress开发中的get_post与get_posts函数使用
Jan 04 PHP
php实现socket推送技术的示例
Dec 20 PHP
Bootstrap+PHP实现多图上传功能实例详解
Apr 08 PHP
Laravel 自定命令以及生成文件的例子
Oct 23 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下过滤html代码的函数 提高程序安全性
2010/03/02 PHP
PHPAnalysis中文分词类详解
2014/06/13 PHP
一个图片地址分解程序(用于PHP小偷程序)
2014/08/23 PHP
PHP中strnatcmp()函数“自然排序算法”进行字符串比较用法分析(对比strcmp函数)
2016/01/07 PHP
php mongodb操作类 带几个简单的例子
2016/08/25 PHP
php中的异常和错误浅析
2017/05/03 PHP
laravel admin实现分类树/模型树的示例代码
2020/06/10 PHP
6个常见的 PHP 安全性攻击实例和阻止方法
2020/12/16 PHP
Javascript的匿名函数小结
2009/12/31 Javascript
详细分析JavaScript变量类型
2015/07/08 Javascript
jQuery简单自定义图片轮播插件及用法示例
2016/11/21 Javascript
ajax +NodeJS 实现图片上传实例
2017/06/06 NodeJs
Vue中mintui的field实现blur和focus事件的方法
2018/08/25 Javascript
p5.js实现动态图形临摹
2019/10/23 Javascript
微信小程序 bindtap 传参的实例代码
2020/02/21 Javascript
JavaScript实现与web通信的方法详解
2020/08/07 Javascript
Python中使用插入排序算法的简单分析与代码示例
2016/05/04 Python
python语音识别实践之百度语音API
2018/08/30 Python
python实现随机漫步方法和原理
2019/06/10 Python
ipad上运行python的方法步骤
2019/10/12 Python
python Pillow图像处理方法汇总
2019/10/16 Python
基于Python3.7.1无法导入Numpy的解决方式
2020/03/09 Python
Python 列表中的修改、添加和删除元素的实现
2020/06/11 Python
CSS3实现缺角矩形,折角矩形以及缺角边框
2019/12/20 HTML / CSS
HTML5的Geolocation地理位置定位API使用教程
2016/05/12 HTML / CSS
汽车维修专业毕业生的求职信分享
2013/12/04 职场文书
会计学专业学生的求职信范文
2014/01/27 职场文书
人口与计划生育目标管理责任书
2014/07/29 职场文书
离婚财产处理协议书
2014/09/30 职场文书
群众路线查摆问题及整改措施
2014/10/10 职场文书
2014年领班工作总结
2014/11/25 职场文书
简历自我评价优缺点
2015/03/11 职场文书
公司清洁工岗位职责
2015/04/15 职场文书
初中运动会前导词
2015/07/20 职场文书
2016年全国爱眼日宣传教育活动总结
2016/04/05 职场文书
PyQt5实现多张图片显示并滚动
2021/06/11 Python