1

curl を使用し、定義された URL から特定のコンテンツを取得する小さなスクリプトがあります。これをローカルホストでテストしたところ、機能しました。

今、無料のホスティングから HTTPS のみの Web サイト (証明書は無効ですが、所有者はわかっています) からデータを取得する必要がありますが、myserver はサポートCURLfile_get_contents("https://other-server.com")機能もしていません。ちなみにhttp://other-server.comアクセス不可。

HTTPS ポートを使用してこのサーバーからファイルをフェッチする方法はありますが、HTTP プロトコルを使用しますか? または、サーバーがサポートしていませんが、HTTPS を使用する方法はありますか? (それは私のサーバーではありません。その構成にアクセスできません)

4

1 に答える 1

2

これを試して:

<?php
$fp = fsockopen("ssl://other-server.com", 443, $errno, $errstr);
if(!$fp) die($errno. " : " . $errstr);
$send = 
 "GET / HTTP/1.0\r\n".
 "Host:other-server.com\r\n".
 "Accept:text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8\r\n".
 "\r\n";

fwrite($fp, $send);
while(!feof($fp)) {
  echo fread($fp, 512);
}

?>

「ssl transport not available エラー メッセージ」が表示された場合は、「ソケット トランスポート "ssl" in PHP not enabled」を参照してください。

ホストが外部であり、おそらく無料の Web ホスティング サービスである場合は、運が悪い.. 最良のオプションは、SSL トランスポートが有効になっている Web ホストを特定することです。そうしないと、HTTPS プロトコルでの作業は単に準拠しません.

最後の「アウト」は、拡張機能を PHP 言語に動的にロードしようとすることです。一致する正確な拡張子 (dll/so) が必要です。

  1. ホスト上の PHP バージョン (phpinfo を参照)。
  2. ホストの CPU アーキテクチャ (unix、 を参照passthru("cat /proc/cpuinfo");)、たとえば amd64、i386..
  3. OS の「レイアウト」、.dll は Windows ホスト (IIS など) 用、.so は UNIX 用です。

使用する関数はdl、ライブラリをロードするための別名ダイナミック リンクです。Windows ホストの場合は必要php_openssl.dllでありphp_sockets.dll、UNIX や OOops の場合は、php コアを再コンパイルする必要があります。

ハッピーハッキング:)

php-man-pages

于 2012-07-21T15:42:39.307 に答える