最近、Hacker News API を調査中に HTTPS の問題に遭遇しました。すべての Hacker News API は、通常の HTTP プロトコルとは異なる暗号化された HTTPS
プロトコルを通じてアクセスされるため、API で提供されるデータを取得するために PHP の関数 file_get_contents() を使用すると、エラーが発生します。このように:
$data =file_get_contents("https://hacker-news.firebaseio.com/v0/topstories.json? print=pretty"); 。 ..... 上記のコードを実行すると、次のエラー メッセージが表示されます: PHP 警告: file_get_contents(): ラッパー "https" が見つかりません - を有効にするのを忘れましたかPHP を設定したときにこのエラーが発生するのはなぜですか? インターネットで検索したところ、多くの人がこのエラーに遭遇していることがわかりました。私のローカル マシンでは、PHP 設定ファイルに enabled パラメータがないためです。 /bin/php.ini の項目 ;extension=php_openssl.dll では、その前のセミコロンを削除する必要があります。次のスクリプトを使用して、PHP 環境の構成を確認できます: $w = stream_get_wrappers(); echo 'openssl: ', extension_loaded ('openssl') 'yes':'no', " n"; echo 'http ラッパー: ',in_array('http', $w) ? 'yes':'no', "n"; echo 'https ラッパー: ',in_array('https', $ w) ? 'yes':'no', "n"; echo 'wrappers: ',var_dump($w); 上記のスクリプト スニペットを私のマシンで実行すると、結果は次のようになります: openssl: no http ラッパー: はい https ラッパー: いいえ wrappers: array(10) { [0]=>
string(3) "php"
[1] =>
string(4) "ファイル"
[2]=>
string(4) "glob"
[3]=> ]=>
string(4) "http"
[5 ]=>
string(3) "ftp"
[6]=>
string(3) "zip"
[ 7]=>
string(13) "compress.zlib" [8]=>
string(14) "compress.bzip2"
[9]=>
string(4) " phar"
}
代替手段
エラーを見つけて修正しますこれは非常に簡単ですが、難しいのは、エラーを見つけた後は修正できないことです。当初はこのスクリプト メソッドをリモート ホストに配置したいと考えていましたが、リモート ホストの PHP 構成を変更できなかったので、このソリューションを使用できませんでしたが、これをツリーにハングアップすることはできません。道路が通行止めになっている場合は、別の道がないか確認してください。
PHP でコンテンツをキャプチャするために私がよく使用するもう 1 つの関数は、file_get_contents() よりも強力で、多くのオプションのパラメーターを提供します。 HTTPS コンテンツへのアクセスの問題については、使用する必要がある CURL 構成パラメーターは次のとおりです:
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER,FALSE);
セマンティクスから、SSL セキュリティ検証を無視/スキップすることがわかります。これは良い習慣ではないかもしれませんが、通常のシナリオ
ではこれで十分です。
以下は、HTTPS コンテンツにアクセスできる Curl によってカプセル化された関数です。
function getHTTPS($url) {
$ch =curl_init();
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER,FALSE);
curl_setopt($ch, CURLOPT_HEADER, false);
curl_setopt($ ch、curlopt_followlocation、true);
curl_setopt($ ch、curlopt_url、$ url); $result =curl_exec($ch);
curl_close($ch); 詳細については、公式ウェブサイトのカスタマーサービスをご覧ください:
http://www.lampbrother.net
http: //yun.itxdl.cn/online/cto/index.php?u=5
This牛、一は牛です -Xコース CTO
コース http://yun.itxdl.cn/online/server/index.php?U =5 モバイルインターネットサーバーサイド開発コースhttp://yun.itxdl.cn/online/ weixin/index.php?u=5 WeChat開発コース
http://yun.itxdl.cn/online/yingxiao/index.php?u=5マイクロマーケティングコース
http://yun.itxdl.cn/online/phpcms/index.php?u=5phpcms二次開発コース
|