虛擬主機無法使用fsockopen操作處理方法

2022-06-17 06:48:14 字數 1621 閱讀 8118

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

}$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( 。

另:discus

開啟source\function\function_filesock.php這個檔案

找到if(function_exists('fsockopen')) elseif(function_exists('pfsockopen')) {

修改成if(function_exists('pfsockopen')) {

虛擬主機使用記錄 02

但是一到中午,或者晚上的時候,基本上就連不上 了 但是訪問靜態頁的話,速度就好一些 今天下午的時候跟客服通過qq交流了一下 答應給我換個伺服器 轉移完畢,給我ip,我到註冊網域名稱的站點上更新了ip,dns解析在大概半小時不到的時間裡就生效了,速度不錯 用阿江的asp探針測試了一下這個伺服器的效能 ...

使用tomcat部署虛擬主機

使用tomcat部署虛擬主機 修改server.xml配置檔案,建立兩個網域名稱的虛擬主機,修改如下兩個引數塊 1.cat usr local tomcat conf server.xml 2.3.4.5.6.7.8.9.10.11.步驟一 配置伺服器虛擬主機 1 修改server.xml配置檔案,...

mysql虛擬主機 虛擬主機有mysql嗎

mysql是一種開放源 的關係型資料庫管理系統 rdbms 使用最常用的資料庫管理語言 結構化查詢語言 sql 進行資料庫管理。mysql因為其速度 可靠性和適應性而備受關注。大多數人都認為在不需要事務化處理的情況下,mysql是管理內容最好的選擇。mysql所使用的 sql 語言是用於訪問資料庫的...