ホームページ >バックエンド開発 >PHPチュートリアル >File_get_contents は https 接続をリクエストできません ソリューション_PHP チュートリアル

File_get_contents は https 接続をリクエストできません ソリューション_PHP チュートリアル

WBOY
WBOYオリジナル
2016-07-13 10:49:041288ブラウズ

file_get_contents を使用して https 接続をリクエストできない問題の解決策は非常に簡単です。もちろん、Linux システムに openssl モジュールをインストールする必要があります。

PHP.ini のデフォルト設定では、file_get_contents を使用して https リンクを読み取ると、次のエラーが発生します:

警告: fopen() [function.fopen]: ラッパー「https」が見つかりません – PHP を設定したときに有効にするのを忘れましたか?

解決策は 3 つあります:

1. Windows 上の PHP の場合は、php.ini に移動し、extension=php_openssl.dll の前の「;」を削除して、サービスを再起動するだけです。
2. Linux 上の PHP の場合は、openssl モジュールをインストールする必要があります。インストール後にアクセスできるようになります。

インストール方法


OpenSSLライブラリのインストール

公式ウェブサイト: http://www.openssl.org

ダウンロードページ: http://www.openssl.org/source/

ダウンロードする最新バージョンを選択してください

http://www.openssl.org/source/openssl-1.0.0a.tar.gz

解凍:

tar –zxvf openssl-1.0.0d.tar.gz、解凍ディレクトリは openssl-1.0.0d です

次に cd openssl-1.0.0d と入力して、設定、コンパイル、インストールを行います

設定

./configure または ./config

コンパイル

作る

インストール

メイクインストール

3. サーバーの構成を変更できない場合は、curl 関数を使用して file_get_contents 関数を置き換えます。 もちろん、これは単純な置き換えではありません。通常、curl 関数を使用するための対応するパラメータ設定もあります。

curl 関数は次のようにカプセル化されます:

コードは次のとおりです コードをコピー

関数 http_request($url,$timeout=30,$header=array()){
If (!function_exists('curl_init')) {
throw new Exception('サーバーがcurlをインストールしていません');
}
$ch =curl_init();
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HEADER, true);
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_TIMEOUT, $timeout);
if (!empty($header)) {
curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
}
$data =curl_exec($ch);
list($header, $data) =explode("rnrn", $data);
$http_code =curl_getinfo($ch, CURLINFO_HTTP_CODE);
If ($http_code == 301 || $http_code == 302) {
$matches = array();
preg_match('/Location:(.*?)n/', $header, $matches);
$url = トリム(array_pop($matches));
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HEADER, false);
$data =curl_exec($ch);
}

if ($data == false) {
curl_close($ch);
}
@curl_close($ch);
$data を返す;
}

www.bkjia.com本当http://www.bkjia.com/PHPjc/632728.html技術記事 file_get_contents を使用して https 接続をリクエストできない問題の解決策は非常に簡単です。もちろん、Linux システムに openssl モジュールをインストールする必要があります。 PHP.ini はデフォルトで設定されています...
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。