2011-05-07 6 views
3

cURLをサポートするには、--with-curlオプションを指定する必要があります。
ソケットをサポートするには、--enable-socketsオプションを指定してphpをコンパイルする必要があります。
ストリームラッパーは、http、ftp ...をfopen、file_get_contentsなどの関数でサポートさせるには、allow_url_fopenをphp.iniでOnに設定する必要があります。

ほとんどの共有ウェブホスティングサーバーでは、以前のすべての機能が有効になっていますが、
の中には、オプションのステータスがあるため、これらの機能をサポートしていないものもあります。

一方、ストリームはPHPコアの一部です。
誰かがverryがポータブルにしたい場合は(私は思う)PHPのHTTPクライアント例えば、cURLのに基づいていない、 ソケット、またはラッパー(HTTP)のサポート、そして、で行うことができます:
php、ほとんどのポータブルリモートサーバとコアストリームの接続?

$fp = stream_socket_client("tcp://example.com:80", $errno, $errstr); 
fwrite($fp, "GET/HTTP/1.0\r\nHost: example.com\r\nAccept: */*\r\n\r\n"); 

HTTPストリームラッパーではなくストリームトランスポートラッパー(tcp)を使用しています。

php.iniディレクティブのallow_url_fopenがオフに設定されていても、 私はtcp transportを使用してstream_socket_client()経由でリモート接続を行うことができます。

私の質問は以下のとおりです。
1のようにそれらをハードコーディングすることにより、php.iniのfsockopenのstream_socket_clientなどの関数または無効にする可能性を除いて、コアストリームの可用性をブロックするが方法です:

disable_functions = exec,passthru,shell_exec,stream_socket_client,fsockopen ... 

を?? ?
2.最初に正しいポート(たとえば80)に接続し、fwrite($fp, 'GET /...');を使用して低レベルを送信することにより、http/ftp ...要求で後で有効にできる最も移植性の高いソリューション をリモート接続用に使用していますか? http/ftpは をリモートサーバーに照会しますか?

答えて

3

リモート接続を無効にしたいホスティング企業は、ファイアウォール内のすべての発信接続を既にブロックしている可能性があります(誤って考えても構いませんが)stream_socket_clientを許可しても、彼らはファイアウォールでそれをブロックしない場合は

は、あなたはまだ克服するために、2つの問題を抱えている:

  • を彼らはおそらくうとすぐに、彼らは
  • もしそれを知るようブロックstream_socket_client彼らドン彼らの接続ポリシーのためのファイアウォールルールを設定する方法(またはケア)を知っている、彼らはセキュリティを全くホスティングについて多くを知っていない可能性があります

あなたは本当にあなたが必要とする機能が少なくて済みます。ホスティング市場は多くのオプションがあるため、あなたのニーズに合ったものを見つけることが大切です。ほとんどのホスティング業者は既に発信接続を許可しており、ソケットとURLストリームをブロックしません。 cURLは、ほぼすべてのPHPビルド(およびほぼすべてのホスト)に組み込まれています。

  1. はい、彼らはファイアウォールで発信接続をブロックすることがあります。あなたの質問に答えるために

    。 url_fopen、cURLなどを許可するホストでさえも、HTTP以外のほとんどのポートでトラフィックをブロックして、スパム発信者、クラッカーその他のブラックハットには邪魔にならないようにします。

  2. おそらく、サーバーのコンテキストで。クッキー、リダイレクトなどのようなものに関してはあまり柔軟ではありません。あなたはまだHTTPプロトコルを実装する必要があります。これは、いくつかのソリューション(たとえば、Cookieなどがない通常のGETが必要な場合)が簡単な場合がありますが、Cookie処理、リダイレクト、エラー処理をサポートしたい場合は面倒です、HTTPS、ファイルのアップロードなどが含まれます。

可搬性のソリューションであっても、私はHTTPライブラリを書く以外のものに焦点を合わせるべきだと思います。 cURLをサポートしているホストを見つけるのは難しくありません。

+0

+1、お金の上に。 –

関連する問題