仮想ホストserver_PHPチュートリアルの無効化されたphp fsockopen関数に対する解決策の簡単な分析

WBOY
リリース: 2016-07-21 14:59:29
オリジナル
1038 人が閲覧しました

1. fsockopen() を無効にする方法
以下は、fsockopen を無効にするためによく使用される 2 つの方法です。
1. php.ini を変更し、disable_functions = の後に fsockopen を追加します。
2. php.ini を変更し、allow_url_fopen = Onallow_url_fopen = Off に変更します。

2. 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" を削除して追加します。例は次のとおりです。

$fp = fsockopen($host, 80, $errno, $errstr, 30);
$fp = stream_socket_client( $host."80", $errno, $errstr, 30);
3. PHP バージョンが 5.0 より低く、fsockopen が無効で、実装する関数が存在しない場合はどうすればよいですか? fsockopen 関数:
コードをコピーします
コードは次のとおりです:

function b_fsockopen($host, $port, &$errno, &$errstr, $timeout) { $ip = gethostbyname($host); $s =ソケット_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 =ソケット_last_error($s);
$errstr =ソケット_strerror($errno);
ソケットクローズ($ s);
return false;
}


具体的な操作: 1. まず検索します。
fsockopen
関数のコードセグメントを使用し、その先頭に上記のコードを追加し、文字列
fsockopen(
) を検索します。コードセグメントを削除し、
b_fsockopen(
) に置き換えます。 2. fsockopen 関数はファイル ポインターを返すため、file 関数で操作できますが、この b_fsockopen 関数はコード セグメントを引き続き変更する必要があります: replace fread()。 socket_read
( と socket_write( を使用します。 fwrite( を置き換え、socket_close( を使用して fclose(.) を置き換えます。 http://www.bkjia.com/PHPjc/328145.html
www.bkjia.comtru​​e

http://www.bkjia.com/PHPjc/328145.html技術記事 1. fsockopen() を無効にする方法 fsockopen を無効にするためによく使用される 2 つの方法は次のとおりです。 1. php.ini を変更し、disable_functions = を追加し、その後に fsockopen を追加します。 2. php.ini を変更し、allow_url_... を追加します
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート