发布于 2014-08-19 13:55:33 | 380 次阅读 | 评论: 0 | 来源: 网友投递

这里有新鲜出炉的PHP面向对象编程,程序狗速度看过来!

PHP开源脚本语言

PHP(外文名: Hypertext Preprocessor,中文名:“超文本预处理器”)是一种通用开源脚本语言。语法吸收了C语言、Java和Perl的特点,入门门槛较低,易于学习,使用广泛,主要适用于Web开发领域。PHP的文件后缀名为php。


本文讲解了php的fsockopen和pfsockopen函数被禁用的解决方法并给出了二种替代方案,一种是stream_socket_client函数代替,一种是通过socket_create手动开发一个类似fsockopen功能的函数,感兴趣的同学参考下.

也许fsockopen、pfsockopen函数的确存在着安全的隐患,但是我们却已经无从考证,这都是IDC商说的,不管是什么原因吧,反正他们是把这两个函数禁用了,那么如何解决呢,下面是小编整理的方法,希望对用到的同学有一定的参考。

解决方法如下:

一、使用stream_socket_client()替代

服务器同时禁用了fsockopen、pfsockopen,那么用其他函数代替,如stream_socket_client()。注意:stream_socket_client()和fsockopen()的参数不同。  

具体操作:

搜索程序中的字符串 fsockopen( 替换为 stream_socket_client( ,然后,将原fsockopen函数中的端口参数“80”删掉,并加到$host。   

示例如下:

修改前:

 

代码如下:
$fp = fsockopen($host, 80, $errno, $errstr, 30);

 

 

代码如下:
$fp = fsockopen($host, $port, $errno, $errstr, $connection_timeout);

 

修改后:

 

代码如下:
$fp = stream_socket_client(“tcp://”.$host.”80″, $errno, $errstr, 30);

 

 

代码如下:
$fp = stream_socket_client(“tcp://”.$host.”:”.$port, $errno, $errstr, $connection_timeout);

 

二、重写法

如果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( 。

以上的方法中,我用stream_socket_client()替代问题解决,第二个方法没有去试。



历史版本 :
PHP 7.2.1 正式发布,多项内容修复
PHP 7.1.13,7.0.27,5.6.33 正式发布,多项内容修复
PHP 7.2.0 正式发布,多项内容修复
PHP 7.1.12 正式发布,多项内容修复
PHP 7.0.26 正式发布,多项内容修复
PHP Curl 类库 YurunHttp v1.3.15,新增功能
PHP 7.2.0 RC6 发布,bug 修复版本
PHP 7.2.0 RC5 发布,bug 修复版本
PHP 7.0.25 和 7.1.11 正式发布,多项内容修复
PHP 7.2.0 RC4 发布,bug 修复版本
PHP 7.2.0 RC3 发布,bug 修复版本
PHP 7.0.24 和 7.1.10 正式发布,多项内容修复
最新网友评论  共有(0)条评论 发布评论 返回顶部

Copyright © 2007-2017 PHPERZ.COM All Rights Reserved   冀ICP备14009818号  版权声明  广告服务