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

yipeiwu_com6年前服务器

一、如何禁用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(

相关文章

Ffmpeg为视频添加一个循环播放的背景音乐参数详解

ffmpeg -i out3.mp4 -i music3D.wav -filter_complex [1:a]aloop=loop=-1:s...

Ubuntu下Python+Flask分分钟搭建自己的服务器教程

Ubuntu下Python+Flask分分钟搭建自己的服务器教程

最近帮朋友做了点东西,最后需要将结果在网页中展示,这就需要搭建个服务器,做几个网页把数据信息展示出来。网上找了一下,阿里腾讯都有租服务器的业务,但是有的时候我们并不需要那么复杂大型的服务...

python使用socket创建tcp服务器和客户端

python使用socket创建tcp服务器和客户端。 服务器端为一个时间戳服务器,在接收到客户端发来的数据后,自动回复。 客户端,等待用户输入,回车后向服务器发送用户输入的内容。 分别...

python3+PyQt5 创建多线程网络应用-TCP客户端和TCP服务器实例

本文在上文的基础上重新实现支持多线程的服务器。 以下为TCP客户端的程序代码: #!/usr/bin/env python3 import sys from PyQt5.QtCor...

Flask入门之上传文件到服务器的方法示例

Flask入门之上传文件到服务器的方法示例

今天要做一个简单的页面,可以实现将文件 上传到服务器(保存在指定文件夹) #Sample.py # coding:utf-8 from flask import Flask,ren...