cari
Rumahphp教程php手册空间不支持fsockopen函数解决办法

空间不支持fsockopen函数解决办法

Jun 13, 2016 am 09:46 AM
fsockopenTidak disokongfungsicaraTemuiangkasa lepasselesaikan

今天买了一个空间发现空间不支持fsockopen函数,后来网上找了几种解决空间不支持fsockopen方法,下面给大家分享一下,希望对各位朋友有所帮助呀。

为了服务器安全考虑很多主机商禁用了php的fsockopen函数,昨天进博客,使用cos-html-cache生成静态文件,尼玛提示:

Warning: fsockopen() has been disabled for security reasons in D:...cos-html-cachecos-html-cache.php on line 35

换了其他版本的cos-html-cache,还是不行。后来找到下面的方法。 = =、(结果不行,因为函数都被禁用了。)

大家试下,很少有我这样的情况的,用其他替代函数。

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


解决方案二:

fsockopen大多数应用是的获取远程页面数据,对于获取远程页面这种应用,PHP还有其他函数可以完美替代:
 
方法1:

 代码如下 复制代码
$str = file("http://www.bKjia.c0m");
$count = count($str);
for ($i=0;$i      $file .= $str[$i];
     }
echo $file;
?>

 
 
方法2:

 代码如下 复制代码
$str = file_get_contents("http://www.bKjia.c0m");
echo $str;
?>
Kenyataan
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
3 minggu yang laluBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
3 minggu yang laluBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Cara Memperbaiki Audio Jika anda tidak dapat mendengar sesiapa
3 minggu yang laluBy尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Cara Membuka Segala -galanya Di Myrise
3 minggu yang laluBy尊渡假赌尊渡假赌尊渡假赌

Alat panas

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

Penyesuai Pelayan SAP NetWeaver untuk Eclipse

Penyesuai Pelayan SAP NetWeaver untuk Eclipse

Integrasikan Eclipse dengan pelayan aplikasi SAP NetWeaver.